TCP throughput depends on how much unacknowledged data a sender and receiver can keep in flight. On long-distance or high-latency connections, the default Linux TCP buffer limits can constrain a single flow before the network link is saturated.This article shows how to increase TCP receive and send window limits on a Linux virtual machine (VM) in Nebius AI Cloud.Use this tuning if your workload transfers large amounts of data over connections with both:
High bandwidth
Noticeable round-trip latency
Typical examples include:
Cross-region replication
Large model or dataset transfers
Long-lived TCP sessions that need higher per-flow throughput
If your traffic is short-lived, latency-sensitive, or limited by the application rather than the network path, this tuning may have little effect.
These values keep the minimum and default TCP buffer settings close to the Linux defaults, while increasing the maximum values for high-bandwidth links.The recommended maximum TCP window targets a single flow of about 3 Gbit/s over a 300 ms round-trip-time path. That bandwidth-delay product is about 108 MB, which is rounded up to 128 MiB and then doubled to account for the effect of net.ipv4.tcp_adv_win_scale=1.
Larger TCP buffers can increase memory consumption under heavy connection fan-out. Verify available memory before applying this tuning on smaller VMs or on hosts with many simultaneous high-throughput flows.
If your application still does not reach the expected throughput, check the end-to-end path for other limits such as application-level buffer sizing, rate limiting, packet loss, or congestion on the remote side.
After rollback, the VM uses the remaining sysctl configuration from the operating system image and any other files in /etc/sysctl.d.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Nebius AI Cloud","colors":{"primary":"#6057f7","light":"#6057f7","dark":"#6057f7"},"logo":{"light":"https://mintcdn.com/nebius-ai-cloud/Ig0U9IUMcvPL0NXJ/_assets/logo/logo.svg?fit=max\u0026auto=format\u0026n=Ig0U9IUMcvPL0NXJ\u0026q=85\u0026s=8dd637468a6b53f6c1af6387d11e76c7","dark":"https://mintcdn.com/nebius-ai-cloud/Ig0U9IUMcvPL0NXJ/_assets/logo/logo.svg?fit=max\u0026auto=format\u0026n=Ig0U9IUMcvPL0NXJ\u0026q=85\u0026s=8dd637468a6b53f6c1af6387d11e76c7"},"favicon":"https://mintcdn.com/nebius-ai-cloud/Ig0U9IUMcvPL0NXJ/_assets/favicon.ico?fit=max\u0026auto=format\u0026n=Ig0U9IUMcvPL0NXJ\u0026q=85\u0026s=8a5c39792808860e8902cbf209ba4843","appearance":{"default":"system"},"background":{"color":{"dark":"#26262A"}},"navbar":{"links":[{"href":"https://nebius.com/#ai-contact-form","label":"Contact us"}],"primary":{"type":"button","label":"Open web console","href":"https://console.nebius.com/"}},"footer":{"socials":{"youtube":"https://www.youtube.com/@nebiusofficial","facebook":"https://www.facebook.com/nebiusofficial","linkedin":"https://www.linkedin.com/company/nebius","x":"https://x.com/nebiusai"}},"seo":{"metatags":{"google-site-verification":"p7dnMrsuoFlnyF9Oo0Ys0xPbeRCpQ9MedGsgi7nBOaI"}},"integrations":{"ga4":{"measurementId":"G-DHKV2ZED15"}},"contextual":{"options":["mcp","copy","view","vscode","cursor"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"nebius-ai-cloud","hasAudioNarration":false,"actualSubdomain":"nebius-ai-cloud","customDomains":["docs.nebius.com"],"gitSource":{"type":"github","owner":"nebius","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec4cc0b7a0003c6d80d41f","collectionId":"4bfb6b72-ded4-456b-97b1-657688aa4156","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec4cc0b7a0003c6d80d41f"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED","enabled":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aec67c3a93f970ede8ce688","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Developer tools","count":1576},{"language":"default","tag":"Reference","count":1533},{"language":"default","tag":"CLI","count":822},{"language":"default","tag":"REST API","count":613},{"language":"default","tag":"v1","count":471},{"language":"default","tag":"iam","count":332},{"language":"default","tag":"vpc","count":237},{"language":"default","tag":"v1alpha1","count":225},{"language":"default","tag":"Infrastructure","count":214},{"language":"default","tag":"operation","count":189}],"searchSettings":{"isFiltersEnabled":false}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"_assets/css/styles.css","content":".inline_svg svg{display:inline}.custom-card-icon{width:fit-content!important}.custom-card-icon>div{padding:32px;height:100%}.getting_started_wrapper .custom-card-icon:hover{border:1px solid rgba(27, 45, 79, 0.15)!important}.dark .getting_started_wrapper .custom-card-icon,.dark .getting_started_wrapper .custom-card-icon:hover{border:1px solid rgba(255, 255, 255, 0.15)!important}.getting_started_wrapper .custom-card-icon>div:hover{background:rgba(0, 0, 0, 0.03)}.dark .getting_started_wrapper .custom-card-icon>div:hover{background:rgba(255, 255, 255, 0.03)}.platform_services_wrapper .custom-card-icon{border:none;border-radius:24px;box-shadow:1px 3px 13px 0px rgba(0, 0, 0, 0.05), 0px 1px 6px 0px rgba(0, 0, 0, 0.05)}.platform_services_wrapper .custom-card-icon:hover{box-shadow:0px 3px 10px 0px rgba(0, 0, 0, 0.15)}.dark .platform_services_wrapper .custom-card-icon{background:rgba(48, 48, 53, 1)}.dark .platform_services_wrapper .custom-card-icon>div:hover{background:rgba(255, 255, 255, 0.03)}.custom-card-icon a{background-color:#fff!important}.dark .custom-card-icon a{background-color:#303035!important;border-color:#303035!important}nav ul .navbar-link a,nav ul #topbar-cta-button a span{border-radius:50px!important;color:#fff}nav ul .navbar-link a:hover{color:#fff}#navbar>div.relative{width:100%;max-width:100%}#navbar>div.max-w-8xl.mx-auto.relative>div>div.relative>div>div,#navbar>div.max-w-8xl.mx-auto.relative>div>div.hidden.lg\\:flex.px-12.h-12{max-width:92rem!important;margin:auto;padding-left:3rem;padding-right:3rem}#navbar>div.relative>div>div.relative,#navbar>div.max-w-8xl.mx-auto.relative>div>div.relative>div>div>div.relative.hidden.lg\\:flex.items-center.flex-1.z-20.justify-center button{background-color:#31343c;width:100%;color:#ffffffcc!important;--tw-ring-color: #ffffffcc !important}.dark #navbar>div.relative>div>div.relative,.dark #navbar>div.max-w-8xl.mx-auto.relative>div>div.relative>div>div>div.relative.hidden.lg\\:flex.items-center.flex-1.z-20.justify-center button{background-color:#26262a}#navbar>div.max-w-8xl.mx-auto.relative>div>div.relative>button div{color:#fff!important}#navbar,#navbar>div,#navbar>div>div{overflow:visible!important}.hidden.lg\\:flex.px-12.h-12{position:relative!important;padding-left:1rem!important;padding-right:1rem!important;overflow-x:auto!important;overflow-y:hidden!important;max-width:100vw!important;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:rgba(96, 87, 247, 0.6) transparent}.hidden.lg\\:flex.px-12.h-12::-webkit-scrollbar{height:6px}.hidden.lg\\:flex.px-12.h-12::-webkit-scrollbar-track{background:transparent;margin:0 1rem}.hidden.lg\\:flex.px-12.h-12::-webkit-scrollbar-thumb{background:rgba(96, 87, 247, 0.6);border-radius:3px}.hidden.lg\\:flex.px-12.h-12::-webkit-scrollbar-thumb:hover{background:rgba(96, 87, 247, 0.9)}html[data-current-path^=\"/legal\"]:not([data-current-path=\"/legal/agreement\"]):not([data-current-path=\"/legal/dpa\"]):not([data-current-path=\"/legal/dpa-inc\"]):not([data-current-path=\"/legal/dpa-il\"]) #content-area>#header>div>div>:not(h1){display:none!important}.nav-tabs{gap:1rem!important;flex-wrap:nowrap!important;width:max-content!important;min-width:100%!important;padding-left:2rem!important}.nav-tabs::after{content:\"\";min-width:1rem!important;flex-shrink:0!important;display:block!important}.nav-tabs-item{white-space:nowrap!important;flex-shrink:0!important}.nav-scroll-caret-left{background:linear-gradient(\n to right,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 1) 50%,\n rgba(255, 255, 255, 0) 100%\n )!important;color:#666!important}.nav-scroll-caret-right{background:linear-gradient(\n to left,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 1) 50%,\n rgba(255, 255, 255, 0) 100%\n )!important;color:#666!important}.dark .nav-scroll-caret-left{background:linear-gradient(to right, #26262a 0%, #26262a 50%, rgba(38, 38, 42, 0) 100%)!important;color:#999!important}.dark .nav-scroll-caret-right{background:linear-gradient(to left, #26262a 0%, #26262a 50%, rgba(38, 38, 42, 0) 100%)!important;color:#999!important}#content blockquote{border-color:#5282ff!important}@media screen and (max-width: 1486px){#navbar>div.max-w-8xl.mx-auto.relative>div>div.relative>div{padding-left:0!important;padding-right:0!important}.homepage_wrapper>div{padding-left:2rem!important;padding-right:2rem!important}}@media screen and (max-width: 1024px){.homepage_wrapper>div{padding-left:0.5rem!important;padding-right:0.5rem!important}}.getting_started_wrapper .card{border-radius:24px;border-width:1px}img.inline{margin:0}img.icon[src*=\"/_assets/\"]{filter:invert(0.1)}.dark img.icon[src*=\"/_assets/\"]{filter:invert(0.96)}img.icon.keep-colors,.dark img.icon.keep-colors{filter:none}img.icon[src*=\"/_assets/sidebar/\"]{filter:brightness(0) invert(0.1)}.dark img.icon[src*=\"/_assets/sidebar/\"]{filter:none}img[src*=\"/_assets/icons/\"]{filter:brightness(0) invert(6%) sepia(58%) saturate(1475%) hue-rotate(195deg) brightness(103%) contrast(91%)}.dark img[src*=\"/_assets/icons/\"]{filter:none}.frame{width:fit-content;margin:auto}@media print{#navbar,#sidebar,#content-side-layout,#footer,#pagination,.feedback-toolbar,.media-print-none{display:none}#content-area{width:100%;margin-left:0;padding-left:.25rem}}.chat-assistant-floating-input{display:none!important}.sticky-table [data-table-wrapper]{--page-padding: 0px}.sticky-table table :is(th,td):first-child{position:sticky;left:0;z-index:1;background:rgb(var(--background-light))}.sticky-table table :is(th,td):first-child,.sticky-table table :is(th,td):first-child *{overflow-wrap:anywhere}html.dark .sticky-table table :is(th,td):first-child{background:rgb(var(--background-dark))}.compact-matrix table{width:max-content;min-width:0}.compact-matrix table :is(th,td){min-width:0;padding:8px;vertical-align:middle}.compact-matrix table :is(th,td):not(:first-child){width:auto;text-align:center;white-space:nowrap}.compact-matrix table :is(th,td):first-child{width:150px;white-space:normal}.compact-matrix table th code{padding-inline:2px}.merged-first-column table tbody tr{border-bottom-width:0}.merged-first-column table tbody td{border-bottom:1px solid rgb(var(--gray-100))}html.dark .merged-first-column table tbody td{border-bottom-color:#94a3b81a}.merged-first-column table tbody tr:has(+tr>td:first-child:empty)>td:first-child{border-bottom-color:transparent}.merged-first-column table :is(th,td):first-child{width:260px}.first-expanded-column table :is(th,td):first-child{width:24%;white-space:normal}"}],"page":{"pagePath":"compute/virtual-machines/tcp-window-tuning","slug":"/compute/virtual-machines/tcp-window-tuning","pageMetadata":{"title":"Tuning TCP window sizes on Linux virtual machines","sidebarTitle":"TCP window tuning","description":null,"href":"/compute/virtual-machines/tcp-window-tuning"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`TCP throughput depends on how much unacknowledged data a sender and receiver can keep in flight. On long-distance or high-latency connections, the default Linux TCP buffer limits can constrain a single flow before the network link is saturated.`}),`\n`,_jsx(_components.p,{children:`This article shows how to increase TCP receive and send window limits on a Linux virtual machine (VM) in Nebius AI Cloud.`}),`\n`,_jsx(_components.p,{children:`Use this tuning if your workload transfers large amounts of data over connections with both:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`High bandwidth`}),`\n`,_jsx(_components.li,{children:`Noticeable round-trip latency`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Typical examples include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Cross-region replication`}),`\n`,_jsx(_components.li,{children:`Large model or dataset transfers`}),`\n`,_jsx(_components.li,{children:`Long-lived TCP sessions that need higher per-flow throughput`}),`\n`]}),`\n`,_jsx(_components.p,{children:`If your traffic is short-lived, latency-sensitive, or limited by the application rather than the network path, this tuning may have little effect.`}),`\n`,_jsx(Heading,{level:`2`,id:`recommended-values`,children:`Recommended values`}),`\n`,_jsx(_components.p,{children:`The following settings increase the maximum TCP buffer sizes while keeping default behavior unchanged:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`net.ipv4.tcp_rmem = 4096 131072 268435456`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`net.ipv4.tcp_wmem = 4096 16384 268435456`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`net.core.rmem_max = 536870912`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`net.core.wmem_max = 536870912`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`net.ipv4.tcp_adv_win_scale = 1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`These values keep the minimum and default TCP buffer settings close to the Linux defaults, while increasing the maximum values for high-bandwidth links.`}),`\n`,_jsxs(_components.p,{children:[`The recommended maximum TCP window targets a single flow of about 3 Gbit/s over a 300 ms round-trip-time path. That bandwidth-delay product is about 108 MB, which is rounded up to 128 MiB and then doubled to account for the effect of `,_jsx(_components.code,{children:`net.ipv4.tcp_adv_win_scale=1`}),`.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Larger TCP buffers can increase memory consumption under heavy connection fan-out. Verify available memory before applying this tuning on smaller VMs or on hosts with many simultaneous high-throughput flows.`})}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-tune-tcp-window-sizes`,children:`How to tune TCP window sizes`}),`\n`,_jsx(Heading,{level:`3`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsx(_components.p,{children:`Make sure that:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`The VM runs Linux.`}),`\n`,_jsxs(_components.li,{children:[`You can connect to the VM by using SSH. For more information, see `,_jsx(_components.a,{href:`/compute/virtual-machines/connect`,children:`How to connect to virtual machines in Nebius AI Cloud`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`You have `,_jsx(_components.code,{children:`sudo`}),` privileges on the VM.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`apply-the-changes`,children:`Apply the changes`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Connect to the VM:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`ssh`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`usernam`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`e`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`VM_IP_addres`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`s`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Create a sysctl configuration file:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`sudo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tee`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` /etc/sysctl.d/90-nebius-tcp-window.conf`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/dev/null`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c\u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`'EOF'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`net.ipv4.tcp_rmem = 4096 131072 268435456`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`net.ipv4.tcp_wmem = 4096 16384 268435456`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`net.core.rmem_max = 536870912`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`net.core.wmem_max = 536870912`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`net.ipv4.tcp_adv_win_scale = 1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`EOF`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Apply the configuration:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`sudo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sysctl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --system`})]}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`verify-the-configuration`,children:`Verify the configuration`}),`\n`,_jsx(_components.p,{children:`Check that the VM reports the configured values:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`sysctl`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` net.ipv4.tcp_rmem`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` net.ipv4.tcp_wmem`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` net.core.rmem_max`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` net.core.wmem_max`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` net.ipv4.tcp_adv_win_scale`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Expected output:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`net.ipv4.tcp_rmem = 4096 131072 268435456`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`net.ipv4.tcp_wmem = 4096 16384 268435456`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`net.core.rmem_max = 536870912`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`net.core.wmem_max = 536870912`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`net.ipv4.tcp_adv_win_scale = 1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`If your application still does not reach the expected throughput, check the end-to-end path for other limits such as application-level buffer sizing, rate limiting, packet loss, or congestion on the remote side.`}),`\n`,_jsx(Heading,{level:`3`,id:`roll-back-the-changes`,children:`Roll back the changes`}),`\n`,_jsx(_components.p,{children:`To remove the configuration:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`sudo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` /etc/sysctl.d/90-nebius-tcp-window.conf`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`sudo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sysctl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --system`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`After rollback, the VM uses the remaining sysctl configuration from the operating system image and any other files in `,_jsx(_components.code,{children:`/etc/sysctl.d`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Tuning TCP window sizes on Linux virtual machines","sidebarTitle":"TCP window tuning","description":null,"href":"/compute/virtual-machines/tcp-window-tuning"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Recommended values","slug":"recommended-values","depth":2,"children":[]},{"title":"How to tune TCP window sizes","slug":"how-to-tune-tcp-window-sizes","depth":2,"children":[{"title":"Prerequisites","slug":"prerequisites","depth":3,"children":[]},{"title":"Apply the changes","slug":"apply-the-changes","depth":3,"children":[]},{"title":"Verify the configuration","slug":"verify-the-configuration","depth":3,"children":[]},{"title":"Roll back the changes","slug":"roll-back-the-changes","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/nebius-ai-cloud/15a5fe135c50f620/_assets/js/fix_index.js","/_mintlify/custom/nebius-ai-cloud/031bcfd22bd37d86/_assets/js/nav-tabs-scroll.js","/_mintlify/custom/nebius-ai-cloud/614ea6118f9493e4/_assets/js/onetrust.js","/_mintlify/custom/nebius-ai-cloud/d7115c46a3daa627/_assets/js/reo-dev.js"],"subdomain":"nebius-ai-cloud","siteName":"Nebius AI Cloud","title":"Tuning TCP window sizes on Linux virtual machines - Nebius AI Cloud","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T09:32:28.312Z","originalFileLocation":"compute/virtual-machines/tcp-window-tuning.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Nebius AI Cloud\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/nebius-ai-cloud/0Ek9sP7Ja4is5z8_/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/nebius-ai-cloud/0Ek9sP7Ja4is5z8_/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/nebius-ai-cloud/0Ek9sP7Ja4is5z8_/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/nebius-ai-cloud/0Ek9sP7Ja4is5z8_/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/nebius-ai-cloud/0Ek9sP7Ja4is5z8_/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/nebius-ai-cloud/0Ek9sP7Ja4is5z8_/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/nebius-ai-cloud/0Ek9sP7Ja4is5z8_/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/nebius-ai-cloud/0Ek9sP7Ja4is5z8_/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/nebius-ai-cloud/0Ek9sP7Ja4is5z8_/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Tuning TCP window sizes on Linux virtual machines - Nebius AI Cloud\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Nebius AI Cloud\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.nebius.com/compute/virtual-machines/tcp-window-tuning\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://nebius-ai-cloud.mintlify.app/_mintlify/api/og/v2?division=VM+networking\u0026amp;title=Tuning+TCP+window+sizes+on+Linux+virtual+machines\u0026amp;theme=60ad9497c6ea86508326929d\u0026amp;signature=41125be7cfe7f2616905301b75efcb30b03d291e9e58b0383fcef50407938e30\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Tuning TCP window sizes on Linux virtual machines - Nebius AI Cloud\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://nebius-ai-cloud.mintlify.app/_mintlify/api/og/v2?division=VM+networking\u0026amp;title=Tuning+TCP+window+sizes+on+Linux+virtual+machines\u0026amp;theme=60ad9497c6ea86508326929d\u0026amp;signature=41125be7cfe7f2616905301b75efcb30b03d291e9e58b0383fcef50407938e30\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/nebius-ai-cloud/0Ek9sP7Ja4is5z8_/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Nebius AI Cloud\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6057f7\">\u003cmeta data-mint-head name=\"google-site-verification\" content=\"p7dnMrsuoFlnyF9Oo0Ys0xPbeRCpQ9MedGsgi7nBOaI\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.nebius.com/compute/virtual-machines/tcp-window-tuning\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/compute/virtual-machines/tcp-window-tuning.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.nebius.com/#organization\",\"name\":\"Nebius AI Cloud\",\"url\":\"https://docs.nebius.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/nebius-ai-cloud/Ig0U9IUMcvPL0NXJ/_assets/logo/logo.svg?fit=max\u0026auto=format\u0026n=Ig0U9IUMcvPL0NXJ\u0026q=85\u0026s=8dd637468a6b53f6c1af6387d11e76c7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.nebius.com#website\",\"name\":\"Nebius AI Cloud\",\"url\":\"https://docs.nebius.com\",\"publisher\":{\"@id\":\"https://docs.nebius.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.nebius.com/compute/virtual-machines/tcp-window-tuning#webpage\",\"url\":\"https://docs.nebius.com/compute/virtual-machines/tcp-window-tuning\",\"name\":\"Tuning TCP window sizes on Linux virtual machines\",\"dateModified\":\"2026-11-05T09:32:28.312Z\",\"isPartOf\":{\"@id\":\"https://docs.nebius.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.nebius.com/compute/virtual-machines/tcp-window-tuning#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.nebius.com/compute/virtual-machines/tcp-window-tuning#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Virtual machines\",\"item\":\"https://docs.nebius.com/compute/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"VM networking\",\"item\":\"https://docs.nebius.com/compute/virtual-machines/network\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tuning TCP window sizes on Linux virtual machines\",\"item\":\"https://docs.nebius.com/compute/virtual-machines/tcp-window-tuning\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.nebius.com/compute/virtual-machines/tcp-window-tuning#article\",\"headline\":\"Tuning TCP window sizes on Linux virtual machines\",\"name\":\"Tuning TCP window sizes on Linux virtual machines\",\"url\":\"https://docs.nebius.com/compute/virtual-machines/tcp-window-tuning\",\"mainEntityOfPage\":{\"@id\":\"https://docs.nebius.com/compute/virtual-machines/tcp-window-tuning#webpage\"},\"dateModified\":\"2026-11-05T09:32:28.312Z\",\"publisher\":{\"@id\":\"https://docs.nebius.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.nebius.com#website\"}}]}\u003c/script>","siteName":"Nebius AI Cloud","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"Infrastructure","menu":[{"item":"Compute","pages":[{"group":"Virtual machines","pages":[{"title":"Compute","sidebarTitle":"Overview","href":"/compute"},{"group":"Getting started","pages":[{"title":"Getting started with Compute: Create your first Nebius AI Cloud virtual machine","sidebarTitle":"General work with VMs","href":"/compute/quickstart"},{"title":"Getting started with Compute: Host an LLM on Nebius AI Cloud","sidebarTitle":"Hosting an AI model","href":"/compute/quickstart-host-model"}]},{"group":"Types of virtual machines and GPUs","pages":[{"title":"Types of virtual machines and GPUs in Nebius AI Cloud","sidebarTitle":"All platforms and presets","href":"/compute/virtual-machines/types"},{"title":"How to find out platforms and presets available in a project","sidebarTitle":"Listing platforms and presets in a project","href":"/compute/virtual-machines/list-platforms"}]},{"group":"Creating virtual machines","pages":[{"title":"How to create a virtual machine in Nebius AI Cloud","sidebarTitle":"Regular VMs","href":"/compute/virtual-machines/create"},{"title":"Preemptible virtual machines","sidebarTitle":"Preemptible VMs","href":"/compute/virtual-machines/preemptible"}]},{"group":"Managing virtual machines","pages":[{"title":"How to update settings of a virtual machine in Nebius AI Cloud","sidebarTitle":"Updating VMs","href":"/compute/virtual-machines/update"},{"title":"Deleting a Compute virtual machine","sidebarTitle":"Deleting VMs","href":"/compute/virtual-machines/delete"},{"title":"How to access VM metadata","sidebarTitle":"Getting VM metadata","href":"/compute/virtual-machines/instance-metadata"},{"title":"Parameters of a virtual machine configuration in Compute","sidebarTitle":"Parameters of a VM configuration","href":"/compute/virtual-machines/params"}]},{"group":"Maintenance","pages":[{"title":"Maintenance of Compute virtual machines","sidebarTitle":"Overview","href":"/compute/virtual-machines/maintenance"},{"title":"Maintenance reasons in Nebius AI Cloud","sidebarTitle":"Maintenance reason codes","href":"/compute/virtual-machines/maintenance-reasons"},{"title":"How to stop and start Compute virtual machines","sidebarTitle":"Stopping and starting VMs","href":"/compute/virtual-machines/stop-start"},{"title":"Lifecycle of a Compute virtual machine","sidebarTitle":"Lifecycle and statuses of VMs","href":"/compute/virtual-machines/lifecycle"},{"title":"How to enable automatic security updates","sidebarTitle":"Enabling automatic security updates","href":"/compute/storage/automatic-updates"}]},{"group":"VM networking","pages":[{"title":"Private and public IP addresses of Compute virtual machines","sidebarTitle":"IP addresses","description":null,"href":"/compute/virtual-machines/network"},{"title":"Tuning TCP window sizes on Linux virtual machines","sidebarTitle":"TCP window tuning","href":"/compute/virtual-machines/tcp-window-tuning"},{"title":"FQDN and hostname of a virtual machine","sidebarTitle":"FQDN and hostname","description":null,"href":"/compute/virtual-machines/fqdn"},{"title":"How to generate SSH keys","sidebarTitle":"Generating SSH keys","href":"/compute/virtual-machines/ssh-keys"},{"title":"How to connect to virtual machines in Nebius AI Cloud","sidebarTitle":"Connecting to VMs","href":"/compute/virtual-machines/connect"},{"title":"Creating a jump server with WireGuard installed on it","sidebarTitle":"š§āš« Tutorial: Creating a WireGuard jump server","href":"/compute/virtual-machines/wireguard"}]},{"group":"Clustering VMs with InfiniBandā¢","pages":[{"title":"InfiniBand⢠networking for Compute virtual machines with GPUs","sidebarTitle":"Overview","href":"/compute/clusters/gpu/index"},{"title":"How to test a GPU cluster physical state in Compute","sidebarTitle":"Testing InfiniBand connection","href":"/compute/clusters/gpu/test"},{"group":"InfiniBand topology","pages":[{"title":"InfiniBand⢠topology of a GPU cluster","sidebarTitle":"Overview","href":"/compute/clusters/gpu/topology/index"},{"title":"Working with InfiniBand⢠topology of a GPU cluster","sidebarTitle":"Working with topology","href":"/compute/clusters/gpu/topology/manage"}]}]},{"group":"Capacity","pages":[{"title":"Capacity advisor for GPU availability in Nebius AI Cloud","sidebarTitle":"Capacity advisor","href":"/compute/virtual-machines/capacity-advisor"},{"title":"Capacity reservations for Compute virtual machines","sidebarTitle":"Capacity reservations","href":"/compute/virtual-machines/reservations"}]},{"title":"Running AI workloads on VMs","sidebarTitle":"Running AI workloads on VMs","href":"/compute/clusters/ai-workloads"},{"group":"Storage on VMs","pages":[{"title":"Types of storage volumes in Compute","sidebarTitle":"Volume types","href":"/compute/storage/types"},{"title":"Managing Compute volumes","sidebarTitle":"Managing volumes","href":"/compute/storage/manage"},{"group":"Boot disk images","pages":[{"title":"Boot disk images for Compute virtual machines","sidebarTitle":"Overview","href":"/compute/storage/boot-disk-images"},{"title":"Creating custom boot disk images","sidebarTitle":"Creating custom disk images","href":"/compute/storage/custom-disk-images"},{"title":"Creating boot disk images with Packer","sidebarTitle":"Creating images with Packer","href":"/compute/storage/packer"},{"title":"Importing your own image into Compute","sidebarTitle":"Importing images","href":"/compute/storage/import-image"},{"title":"Recommendations for configuring custom images in Compute","sidebarTitle":"Recommendations for custom images","href":"/compute/storage/image-recommendations"}]},{"title":"Managing disk snapshots in Compute","sidebarTitle":"Disk snapshots","href":"/compute/storage/disk-snapshots"},{"title":"Attaching and mounting Compute volumes to VMs","sidebarTitle":"Attaching and mounting volumes to VMs","href":"/compute/storage/use"},{"title":"How to detach additional volumes from virtual machines","sidebarTitle":"Detaching volumes from VMs","href":"/compute/storage/detach-volume"},{"title":"Exporting data from Compute disks and shared filesystems","sidebarTitle":"Exporting data from volumes","href":"/compute/storage/export"},{"title":"Using local SSD disks on Compute virtual machines","sidebarTitle":"Using local SSD disks","href":"/compute/storage/local-disks"}]},{"group":"Monitoring","pages":[{"group":"Monitoring virtual machines","pages":[{"title":"Monitoring virtual machines in Nebius AI Cloud","sidebarTitle":"VM metrics","href":"/compute/monitoring/virtual-machines"},{"title":"Viewing serial logs of virtual machines","sidebarTitle":"VM serial logs","href":"/compute/monitoring/serial-logs"}]},{"title":"Monitoring volumes in Nebius AI Cloud","sidebarTitle":"Monitoring volumes","href":"/compute/monitoring/volumes"}]},{"group":"Troubleshooting","pages":[{"title":"Using the serial console for virtual machines in Nebius AI Cloud","sidebarTitle":"Serial console","href":"/compute/virtual-machines/serial-console"},{"title":"\"Not enough resources\" error for virtual machines in Nebius AI Cloud","sidebarTitle":"\"Not enough resources\" error","href":"/compute/virtual-machines/not-enough-resources"},{"title":"CUDA initialization error on virtual machines in Nebius AI Cloud","sidebarTitle":"CUDA initialization error","href":"/compute/virtual-machines/cuda-init-error"},{"title":"Charging for a virtual machine that was stopped by using Linux commands","sidebarTitle":"Charging for a VM stopped with Linux commands","href":"/compute/virtual-machines/stopped-with-linux-commands"},{"title":"How to collect diagnostic logs from Compute virtual machines","sidebarTitle":"Collecting diagnostic logs","href":"/compute/virtual-machines/logs"},{"title":"Virtual machine is unreachable due to a Docker subnet conflict","sidebarTitle":"Docker subnet conflict","href":"/compute/virtual-machines/docker-subnet-conflict"},{"title":"How to inspect a VM and attach its boot disk to another VM","sidebarTitle":"Inspect a boot disk from another VM","href":"/compute/virtual-machines/inspect-boot-disk"}]},{"group":"Resources","pages":[{"title":"Quotas in Compute","sidebarTitle":"Quotas","href":"/compute/resources/quotas-limits"},{"title":"Compute pricing in Nebius AI Cloud","sidebarTitle":"Pricing","href":"/compute/resources/pricing"}]}]},{"group":"Slurm and Soperator in Nebius AI Cloud","pages":[{"title":"Slurm and Soperator in Nebius AI Cloud","sidebarTitle":"Overview","href":"/slurm-soperator/index"},{"group":"About Slurm and Soperator","pages":[{"title":"Combining Slurm and Kubernetes by using Soperator","sidebarTitle":"Why Slurm and Soperator?","href":"/slurm-soperator/overview/why-slurm-soperator"},{"title":"Soperator cluster architecture","sidebarTitle":"Soperator cluster architecture","href":"/slurm-soperator/overview/architecture"}]},{"title":"Deploying Soperator clusters","sidebarTitle":"Deployment methods","href":"/slurm-soperator/deploy/overview"},{"group":"Capacity management","pages":[{"title":"Ephemeral nodes in Soperator","sidebarTitle":"Ephemeral nodes","href":"/slurm-soperator/capacity/ephemeral-nodes"},{"title":"Moving capacity between training and inference workloads","sidebarTitle":"Moving capacity","href":"/slurm-soperator/capacity/move-capacity"}]},{"group":"Managed Service for Soperator","pages":[{"title":"Creating and deleting Soperator clusters in Managed Service for Soperator","sidebarTitle":"Creating and deleting clusters","href":"/slurm-soperator/managed-soperator/manage"},{"title":"Stopping and starting Soperator clusters in Managed Service for Soperator","sidebarTitle":"Stopping and starting clusters","href":"/slurm-soperator/managed-soperator/stop-start"},{"title":"Managed Service for Soperator service nodes","sidebarTitle":"Service nodes","href":"/slurm-soperator/managed-soperator/service-nodes"}]},{"title":"Connecting to login and worker nodes","sidebarTitle":"Connecting to login and worker nodes","href":"/slurm-soperator/clusters/connect"},{"group":"Jobs","pages":[{"title":"Running Slurm batch jobs","sidebarTitle":"Running batch jobs","href":"/slurm-soperator/jobs/index"},{"group":"Running containerized jobs","pages":[{"title":"Running jobs in containers in Soperator clusters","sidebarTitle":"Overview","href":"/slurm-soperator/jobs/containers/index"},{"title":"Running jobs in containers by using Enroot and Pyxis","sidebarTitle":"Enroot and Pyxis","href":"/slurm-soperator/jobs/containers/pyxis-enroot"},{"title":"Running jobs in containers by using Apptainer","sidebarTitle":"Apptainer","href":"/slurm-soperator/jobs/containers/apptainer"},{"title":"Running jobs in containers by using Docker","sidebarTitle":"Docker","href":"/slurm-soperator/jobs/containers/docker"}]},{"title":"Managing jobs in Soperator clusters","sidebarTitle":"Managing jobs and queue","href":"/slurm-soperator/jobs/manage"}]},{"group":"Performance and reliability","pages":[{"title":"Running the all-reduce NCCL performance test in Soperator clusters","sidebarTitle":"Running the all-reduce NCCL test","href":"/slurm-soperator/jobs/examples/nccl-all-reduce"},{"title":"Health management of worker nodes in Soperator clusters","sidebarTitle":"Health management of worker nodes","href":"/slurm-soperator/worker-nodes-health"}]},{"title":"Downloading data in Soperator clusters","sidebarTitle":"Downloading data","href":"/slurm-soperator/storage/download-data"},{"title":"Managing file access in a Soperator cluster","sidebarTitle":"Managing file access","href":"/slurm-soperator/storage/manage-access"},{"title":"Managing users in a Soperator cluster","sidebarTitle":"Managing users","href":"/slurm-soperator/users/manage"},{"group":"Monitoring","pages":[{"title":"How to monitor job and node statuses in a Soperator cluster","sidebarTitle":"Monitoring job and node statuses","href":"/slurm-soperator/monitoring/statuses"},{"title":"Monitoring metrics of Soperator clusters","sidebarTitle":"Monitoring metrics","href":"/slurm-soperator/monitoring/metrics"},{"title":"Viewing logs of Soperator clusters","sidebarTitle":"Viewing logs","href":"/slurm-soperator/monitoring/logs"}]},{"group":"Resources","pages":[{"title":"Quotas in Managed Service for Soperator","sidebarTitle":"Managed Soperator quotas","href":"/slurm-soperator/managed-soperator/resources/quotas"},{"title":"Pricing in Managed Service for Soperator","sidebarTitle":"Managed Soperator pricing","href":"/slurm-soperator/managed-soperator/resources/pricing"}]}]},{"group":"Managed Service for KubernetesĀ®","pages":[{"title":"Managed Service for KubernetesĀ®","sidebarTitle":"Overview","href":"/kubernetes/index"},{"title":"How to get started with Managed Service for KubernetesĀ®: Create your first cluster for Kubernetes","sidebarTitle":"Getting started","href":"/kubernetes/quickstart"},{"title":"Components in Managed Service for KubernetesĀ®","sidebarTitle":"Cluster components","href":"/kubernetes/components"},{"group":"Kubernetes versions","pages":[{"title":"KubernetesĀ® versions in Managed Service for Kubernetes","sidebarTitle":"Overview","href":"/kubernetes/versions"},{"title":"Setting and upgrading KubernetesĀ® versions in Managed Service for Kubernetes","sidebarTitle":"Managing versions","href":"/kubernetes/manage-versions"},{"title":"KubernetesĀ® version deprecation policy in Managed Service for Kubernetes","sidebarTitle":"Version deprecation","href":"/kubernetes/version-deprecation"}]},{"group":"Working with clusters and nodes","pages":[{"title":"How to create and modify Managed Service for KubernetesĀ® clusters","sidebarTitle":"Creating and modifying clusters","href":"/kubernetes/clusters/manage"},{"title":"Creating and modifying Managed Service for KubernetesĀ® node groups","sidebarTitle":"Creating and modifying node groups","href":"/kubernetes/node-groups/manage"},{"title":"kubeReserved values on worker nodes in Managed Service for KubernetesĀ®","sidebarTitle":"kubeReserved values on worker nodes","href":"/kubernetes/node-groups/kube-reserved"},{"title":"Capacity reservations for Managed Service for KubernetesĀ® node groups","sidebarTitle":"Capacity reservations for node groups","href":"/kubernetes/node-groups/reservations"}]},{"group":"Maintenance","pages":[{"title":"Maintenance in Managed Service for KubernetesĀ®","sidebarTitle":"Overview","href":"/kubernetes/maintenance/index"},{"title":"Managing maintenance in Managed Service for KubernetesĀ®","sidebarTitle":"Managing maintenance","href":"/kubernetes/maintenance/manage"},{"title":"Health checks and automatic recovery of Managed Service for KubernetesĀ® nodes","sidebarTitle":"Health checks and automatic recovery of nodes","href":"/kubernetes/maintenance/health-checks"},{"title":"How to enable or disable health checks in a Managed Service for KubernetesĀ® cluster","sidebarTitle":"Enabling or disabling health checks","href":"/kubernetes/maintenance/enable-disable-health-checks"}]},{"group":"Networking","pages":[{"title":"How to connect to Managed Service for KubernetesĀ® clusters using kubectl","sidebarTitle":"Connecting to clusters with kubectl","href":"/kubernetes/connect"},{"title":"Network requirements for Managed Service for KubernetesĀ® clusters","sidebarTitle":"Network requirements","href":"/kubernetes/networking/requirements"},{"title":"Access restriction for a public endpoint of a Managed Service for KubernetesĀ® cluster","sidebarTitle":"Access restriction for the cluster's public endpoint","href":"/kubernetes/networking/limit-access-to-public-endpoint"},{"title":"Using an OIDC public endpoint in Managed Service for KubernetesĀ® clusters","sidebarTitle":"Using an OIDC endpoint","href":"/kubernetes/networking/oidc-public-endpoint"},{"group":"Security groups","pages":[{"title":"Security groups in Managed Service for KubernetesĀ®","sidebarTitle":"Overview","href":"/kubernetes/networking/security-groups"},{"title":"How to attach security groups to a node group in Managed Service for KubernetesĀ®","sidebarTitle":"Attaching security groups","href":"/kubernetes/networking/manage-security-groups"}]},{"title":"Exposing services with load balancers","sidebarTitle":"Exposing services with load balancers","href":"/kubernetes/clusters/load-balancer"},{"title":"How to use a non-default subnet for Managed Service for KubernetesĀ® clusters and node groups","sidebarTitle":"Using a non-default subnet","href":"/kubernetes/networking/non-default-subnet"},{"title":"How to create a fixed set of public IP addresses for a node group","sidebarTitle":"Assigning public IP addresses from a fixed set","href":"/kubernetes/networking/defined-ips"},{"title":"How to convert a dynamically assigned public IP address to a reusable allocation","sidebarTitle":"Converting dynamic IP addresses to reusable allocations","href":"/kubernetes/networking/dynamic-to-static"},{"title":"Networking add-ons in Managed Service for KubernetesĀ®","sidebarTitle":"CoreDNS and Cilium add-ons","href":"/kubernetes/networking/add-ons"},{"title":"Setting up NodeLocal DNSCache with Cilium network policy controller in Managed Service for KubernetesĀ®","sidebarTitle":"š§āš« Tutorial: Setting up NodeLocal DNSCache with Cilium network policy controller","href":"/kubernetes/networking/nodelocal-dns-cache"}]},{"group":"Workloads","pages":[{"title":"Pulling images from Container Registry for workloads in Managed Service for KubernetesĀ® clusters","sidebarTitle":"Pulling images from Container Registry","href":"/kubernetes/workloads/images-container-registry"}]},{"group":"GPUs and ML/AI workloads","pages":[{"title":"Working with GPUs in the Managed Service for KubernetesĀ®","sidebarTitle":"Setting up GPUs","href":"/kubernetes/gpu/set-up"},{"title":"Interconnecting GPUs in Managed Service for KubernetesĀ® clusters using InfiniBandā¢","sidebarTitle":"Interconnecting GPUs with InfiniBandā¢","href":"/kubernetes/gpu/clusters"},{"title":"Dynamic resource allocation in Managed Service for KubernetesĀ®","sidebarTitle":"Dynamic resource allocation","href":"/kubernetes/gpu/dynamic-resource-allocation"},{"title":"Topology-aware scheduling for GPU workloads in Managed Service for KubernetesĀ®","sidebarTitle":"Topology-aware scheduling","href":"/kubernetes/gpu/topology-aware-scheduling"},{"title":"Running NCCL tests in a Managed Service for KubernetesĀ® cluster with InfiniBandā¢-connected GPUs","sidebarTitle":"š§āš« Tutorial: Running NCCL tests for InfiniBand","href":"/kubernetes/gpu/nccl-test"},{"title":"Managing AI workloads across Managed Service for KubernetesĀ® clusters with SkyPilot","sidebarTitle":"š§āš« Tutorial: Orchestration with SkyPilot","href":"/kubernetes/skypilot"}]},{"group":"Storage","pages":[{"title":"Mounting disks to Pods in a Managed Service for KubernetesĀ® cluster","sidebarTitle":"š§āš« Tutorial: Mounting disks to Pods","href":"/kubernetes/storage/disk-over-csi"},{"title":"Mounting shared filesystems to Pods in a Managed Service for KubernetesĀ® cluster","sidebarTitle":"š§āš« Tutorial: Mounting shared filesystems to Pods","href":"/kubernetes/storage/filesystem-over-csi"}]},{"title":"Deploying and deleting applications for Managed Service for KubernetesĀ®","sidebarTitle":"Applications for Managed Kubernetes","href":"/kubernetes/manage-applications"},{"group":"Observability","pages":[{"title":"Monitoring clusters and nodes in Managed Service for KubernetesĀ®","sidebarTitle":"Monitoring","href":"/kubernetes/monitoring"},{"title":"Logs in Managed Service for KubernetesĀ®","sidebarTitle":"Logs","href":"/kubernetes/logs"}]},{"group":"Optimizing nodes","pages":[{"title":"Autoscaling in Managed Service for Kubernetes","sidebarTitle":"Autoscaling","href":"/kubernetes/node-groups/autoscaling"},{"title":"Moving workload from the existing node group","sidebarTitle":"Moving workload","href":"/kubernetes/node-groups/moving-workload"}]},{"group":"Troubleshooting","pages":[{"title":"\"Unable to allocate CIDR from the pool\" error","sidebarTitle":"Unable to allocate CIDR from the pool error","href":"/kubernetes/troubleshooting/cidr-allocation-error"},{"title":"How to collect diagnostic logs from Managed Service for KubernetesĀ® nodes","sidebarTitle":"Collecting diagnostic logs","href":"/kubernetes/troubleshooting/logs"}]},{"group":"Resources","pages":[{"title":"Managed Service for KubernetesĀ® quotas and constraints","sidebarTitle":"Quotas and constraints","href":"/kubernetes/resources/quotas-limits"},{"title":"Pricing in Managed Service for KubernetesĀ®","sidebarTitle":"Pricing","href":"/kubernetes/resources/pricing"}]}]}]},{"item":"Storage","pages":[{"title":"Storage","href":"/object-storage"}]},{"item":"Network","pages":[{"title":"Network","href":"/vpc"}]}]},{"tab":"AI services","pages":[{"title":"AI services","href":"/ai-services"}]},{"tab":"Observability","pages":[{"title":"Observability","href":"/observability"}]},{"tab":"Management","pages":[{"title":"Management","href":"/signup-billing"}]},{"tab":"Security and cryptography","pages":[{"title":"Security and cryptography","href":"/security/encryption"}]},{"tab":"Developer tools","pages":[{"title":"Developer tools","href":"/developer-tools"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]},{"tab":"Managed Service for Apache Sparkā¢","hidden":true,"pages":[{"title":"Managed Service for Apache Sparkā¢","href":"/spark"}]},{"tab":"Legal","pages":[{"title":"Legal","href":"/legal"}]}]},"basePath":"","title":"Tuning TCP window sizes on Linux virtual machines - Nebius AI Cloud","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}