Assign Interrupts to Processor Cores on Intel® Ethernet Controller ...

Assign Interrupts to Processor Cores on Intel® Ethernet Controller ... Assign Interrupts to Processor Cores on Intel® Ethernet Controller ...

11.07.2015 Views

ong>Assignong>ing ong>Interruptsong> ong>toong> ong>Processorong>ong>Coresong> using an Intel® 82575/82576or 82598/82599 Ethernet ControllerSeptember 2009319935-002

<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g><str<strong>on</strong>g>Cores</str<strong>on</strong>g> using an Intel® 82575/82576or 82598/82599 <strong>Ethernet</strong> C<strong>on</strong>trollerSeptember 2009319935-002


Legal Lines and DisclaimersINFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OROTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONSOF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATINGTO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE,MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel products are not intended foruse in medical, life saving, life sustaining, critical c<strong>on</strong>trol or safety systems, or in nuclear facility applicati<strong>on</strong>s.Intel may make changes <str<strong>on</strong>g>to</str<strong>on</strong>g> specificati<strong>on</strong>s and product descripti<strong>on</strong>s at any time, without notice.Intel Corporati<strong>on</strong> may have patents or pending patent applicati<strong>on</strong>s, trademarks, copyrights, or other intellectual property rights that relate <str<strong>on</strong>g>to</str<strong>on</strong>g> thepresented subject matter. The furnishing of documents and other materials and informati<strong>on</strong> does not provide any license, express or implied, by es<str<strong>on</strong>g>to</str<strong>on</strong>g>ppelor otherwise, <str<strong>on</strong>g>to</str<strong>on</strong>g> any such patents, trademarks, copyrights, or other intellectual property rights.IMPORTANT - PLEASE READ BEFORE INSTALLING OR USING INTEL® PRE-RELEASE PRODUCTS.Please review the terms at http://www.intel.com/netcomms/prerelease_terms.htm carefully before using any Intel® pre-release product, including anyevaluati<strong>on</strong>, development or reference hardware and/or software product (collectively, “Pre-Release Product”). By using the Pre-Release Product, youindicate your acceptance of these terms, which c<strong>on</strong>stitute the agreement (the “Agreement”) between you and Intel Corporati<strong>on</strong> (“Intel”). In the eventthat you do not agree with any of these terms and c<strong>on</strong>diti<strong>on</strong>s, do not use or install the Pre-Release Product and promptly return it unused <str<strong>on</strong>g>to</str<strong>on</strong>g> Intel.Designers must not rely <strong>on</strong> the absence or characteristics of any features or instructi<strong>on</strong>s marked “reserved” or “undefined.” Intel reserves these forfuture definiti<strong>on</strong> and shall have no resp<strong>on</strong>sibility whatsoever for c<strong>on</strong>flicts or incompatibilities arising from future changes <str<strong>on</strong>g>to</str<strong>on</strong>g> them.Intel processor numbers are not a measure of performance. <str<strong>on</strong>g>Processor</str<strong>on</strong>g> numbers differentiate features within each processor family, not across differentprocessor families. See http://www.intel.com/products/processor_number for details.The <strong>Ethernet</strong> c<strong>on</strong>trollers included in this document may c<strong>on</strong>tain design defects or errors known as errata which may cause the product <str<strong>on</strong>g>to</str<strong>on</strong>g> deviate frompublished specificati<strong>on</strong>s. Current characterized errata are available <strong>on</strong> request.Hyper-Threading Technology requires a computer system with an Intel ® Pentium ® 4 processor supporting HT Technology and a HT Technology enabledchipset, BIOS and operating system. Performance will vary depending <strong>on</strong> the specific hardware and software you use. See http://www.intel.com/products/ht/Hyperthreading_more.htm for additi<strong>on</strong>al informati<strong>on</strong>.C<strong>on</strong>tact your local Intel sales office or your distribu<str<strong>on</strong>g>to</str<strong>on</strong>g>r <str<strong>on</strong>g>to</str<strong>on</strong>g> obtain the latest specificati<strong>on</strong>s and before placing your product order.Copies of documents which have an ordering number and are referenced in this document, or other Intel literature, may be obtained from:Intel Corporati<strong>on</strong>P.O. Box 5937Denver, CO 80217-9808or call in North America 1-800-548-4725, Europe 44-0-1793-431-155, France 44-0-1793-421-777, Germany 44-0-1793-421-333, other Countries 708-296-9333.Intel and Intel logo are trademarks or registered trademarks of Intel Corporati<strong>on</strong> or its subsidiaries in the United States and other countries.*Other names and brands may be claimed as the property of others.Copyright © 2009, Intel Corporati<strong>on</strong>. All Rights Reserved.2


<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>Cores</str<strong>on</strong>g>—82575/82576/82598/82599C<strong>on</strong>tents1.0 IP Forwarding and Pinning Queues <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g>s......................................................51.1 Assumpti<strong>on</strong>s.......................................................................................................51.2 Build a New Kernel ..............................................................................................61.3 Install the New Kernel and Restart the System ........................................................81.4 IGB and IXGBE Drivers ........................................................................................81.4.1 IGB ........................................................................................................81.4.2 IXGBE................................................................................................... 101.5 Initializing IP Forwarding .................................................................................... 122.0 Other Optimizati<strong>on</strong>s Found From Performance Testing ............................................ 12Revisi<strong>on</strong> His<str<strong>on</strong>g>to</str<strong>on</strong>g>ryRev Rev Date Descripti<strong>on</strong>2.1 Sept 2009 Added 82576 and 82599 applicability.2.0 Feb 2009 Initial public release.3


82575/82576/82598/82599—<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>Cores</str<strong>on</strong>g>Note: This page intenti<strong>on</strong>ally left blank.4


82575/82576/82598/82599—<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>Cores</str<strong>on</strong>g>1.0 IP Forwarding and Pinning Queues <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g>sMulticore processors and the newest <strong>Ethernet</strong> adapters (including the 82575, 82576,82598, and 82599) allow TCP forwarding flows <str<strong>on</strong>g>to</str<strong>on</strong>g> be optimized by assigning executi<strong>on</strong>flows <str<strong>on</strong>g>to</str<strong>on</strong>g> individual cores. By default, Linux au<str<strong>on</strong>g>to</str<strong>on</strong>g>matically assigns interrupts <str<strong>on</strong>g>to</str<strong>on</strong>g> processorcores. Two methods currently exist for au<str<strong>on</strong>g>to</str<strong>on</strong>g>matically assigning the interrupts, an inkernelIRQ balancer and the IRQ balance daem<strong>on</strong> in user space. Both offer tradeoffsthat might lower CPU usage but do not maximize the IP forwarding rates. Optimalthroughput can be obtained by manually pinning the queues of the <strong>Ethernet</strong> adapter <str<strong>on</strong>g>to</str<strong>on</strong>g>specific processor cores.For IP forwarding, a transmit/receive queue pair should use the same processor coreand reduce any cache synchr<strong>on</strong>izati<strong>on</strong> between different cores. This can be performedby assigning transmit and receive interrupts <str<strong>on</strong>g>to</str<strong>on</strong>g> specific cores. Starting with Linuxkernel 2.6.27, multiple queues can be used <strong>on</strong> the 82575, 82576, 82598, and 82599.Additi<strong>on</strong>ally, multiple transmit queues were enabled in Extended Messaging Signaled<str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> (MSI-X). MSI-X supports a larger number of interrupts that can be used,allowing for finer-grained c<strong>on</strong>trol and targeting of the interrupts <str<strong>on</strong>g>to</str<strong>on</strong>g> specific CPUs.Note:The cores <strong>on</strong> <strong>on</strong>e socket of a dual-socket system can be assigned n<strong>on</strong>-c<strong>on</strong>secutivenumbers. For example, <strong>on</strong> a dual-socket quad-core system Socket 0 has CPU 0, 2, 4, 6and Socket 1 has CPU 1, 3, 5, 7 <strong>on</strong> x86_64, and Socket 0 has CPU 0, 1, 2, 3 and Socket1 has CPU 4, 5, 6 7 <strong>on</strong> x86_32.1.1 Assumpti<strong>on</strong>sThe following hardware and software are assumed in this document’s IP forwardingexample:• x86_64 SMP system• Intel <strong>Ethernet</strong> adapter using 82575EB,82576EB, 82598EB,or 82599ES <strong>Ethernet</strong>c<strong>on</strong>trollers• Installed Fedora Core 11 x86_64 with development packages• Kernel versi<strong>on</strong> 2.6.29.6-217.2.16.fc11.x86_64 (Use a kernel >2.6.27 for MSI-Xand multiple transmit and receive queues. At the time of writing, most stable Linuxdistributi<strong>on</strong>s are using earlier kernels. Some Linux distributi<strong>on</strong>s backport patches <str<strong>on</strong>g>to</str<strong>on</strong>g>earlier kernels; check with your distributi<strong>on</strong> <str<strong>on</strong>g>to</str<strong>on</strong>g> see if an earlier kernel hasbackported changes for the previously menti<strong>on</strong>ed features.)• Network c<strong>on</strong>necti<strong>on</strong>5


<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>Cores</str<strong>on</strong>g>—82575/82576/82598/825991.2 Build a New KernelNote:These instructi<strong>on</strong>s were summarized fromhttp://fedoraproject.org/wiki/Docs/Cus<str<strong>on</strong>g>to</str<strong>on</strong>g>mKernel.Build the kernel as a user with "sudo" privileges.1. Install prerequisite packages rpmdev<str<strong>on</strong>g>to</str<strong>on</strong>g>ols and yum-utils.sudo yum install yum-utils rpmdev<str<strong>on</strong>g>to</str<strong>on</strong>g>ols2. Prepare an RPM package building envir<strong>on</strong>ment in a home direc<str<strong>on</strong>g>to</str<strong>on</strong>g>ry.rpmdev-setuptree3. Download the kernel source rpm file.yumdownloader --source kernel4. Install build dependencies for the kernel source:sudo yum-builddep kernel-2.6.29.6-217.2.16.fc11.x86_645. Install the kernel in<str<strong>on</strong>g>to</str<strong>on</strong>g> the local rpmbuild direc<str<strong>on</strong>g>to</str<strong>on</strong>g>ries. Note that kernel-2.6.29.6-217.2.16.fc11.src.rpm installs in<str<strong>on</strong>g>to</str<strong>on</strong>g> ~/rpmbuild/SOURCES and ~/rpmbuild/SPECS.rpm -Uvh kernel-2.6.29.6-217.2.16.fc11.x86_64.src.rpmIgnore any messages similar <str<strong>on</strong>g>to</str<strong>on</strong>g> the following:warning: user mockbuild does not exist - using rootwarning: group mockbuild does not exist - using root6. Prepare the kernel source tree. The source is in the ~/rpmbuild/BUILD/kernel-2.6.29/linux-2.6.29.x86_64.cd ~/rpmbuild/SPECSrpmbuild -bp --target=`uname -m` kernel.speccd ~/rpmbuild/BUILD/kernel-2.6.29/linux-2.6.29.x86_64/7. Copy the default c<strong>on</strong>figurati<strong>on</strong> file.cp c<strong>on</strong>figs/kernel-2.6.29.6-x86_64.c<strong>on</strong>fig .c<strong>on</strong>figmake oldc<strong>on</strong>fig8. C<strong>on</strong>figure the kernel.a. Start up the c<strong>on</strong>figurati<strong>on</strong> menu:make menuc<strong>on</strong>figb. Make sure you are using the SLUB memory alloca<str<strong>on</strong>g>to</str<strong>on</strong>g>r (the unqueued SLABalloca<str<strong>on</strong>g>to</str<strong>on</strong>g>r):General setup -> Choose SLAB alloca<str<strong>on</strong>g>to</str<strong>on</strong>g>r -> SLUB alloca<str<strong>on</strong>g>to</str<strong>on</strong>g>r (Unqueued Alloca<str<strong>on</strong>g>to</str<strong>on</strong>g>r)c. Turn off forced pre-empti<strong>on</strong>:<str<strong>on</strong>g>Processor</str<strong>on</strong>g> type and features -> Preempti<strong>on</strong> Model -> No Forced Preempti<strong>on</strong>(Server)6


82575/82576/82598/82599—<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>Cores</str<strong>on</strong>g>d. Turn <strong>on</strong> NUMA memory allocati<strong>on</strong> (for multiple processors):<str<strong>on</strong>g>Processor</str<strong>on</strong>g> type and features -> Numa Memory Allocati<strong>on</strong> and SchedulerSupport = Ye. Lower the interrupt frequency. 100 Hz is a typical choice for servers, SMP andNUMA with most processors might show reduced performance when <str<strong>on</strong>g>to</str<strong>on</strong>g>o manytimer interrupts are occurring:<str<strong>on</strong>g>Processor</str<strong>on</strong>g> type and features -> Timer Frequency -> 100 Hzf. Make sure MSI and MSI-X are enabled:Bus opti<strong>on</strong>s (PCI etc.) -> Message Signaled <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> (MSI and MSI-X) = Yg. Turn off Fair Queueing and QoS:Networking support -> Networking Opti<strong>on</strong>s -> QoS and/or Fair Queueing = Nh. Turn off kernel statistics:Kernel hacking -> Collect kernel timers statistics = Ni. If possible:Kernel hacking -> Collect scheduler statistics = N9. Add a new comment line <str<strong>on</strong>g>to</str<strong>on</strong>g> the <str<strong>on</strong>g>to</str<strong>on</strong>g>p of the .c<strong>on</strong>fig file.The comment should c<strong>on</strong>tain the hardware platform the kernel is built for. This is foundwith uname -i.For example, an x86_64 machine has the following line added <str<strong>on</strong>g>to</str<strong>on</strong>g> the <str<strong>on</strong>g>to</str<strong>on</strong>g>p of the c<strong>on</strong>figfile:# x86_6410. Copy the generated c<strong>on</strong>fig file <str<strong>on</strong>g>to</str<strong>on</strong>g> ~/rpmbuild/SOURCES/:cp .c<strong>on</strong>fig ~/rpmbuild/SOURCES/c<strong>on</strong>fig-x86_6411. Edit the kernel.spec file <str<strong>on</strong>g>to</str<strong>on</strong>g> create unique kernel package names.cd ~/rpmbuild/SPECS12. Edit the buildid line in the kernel.spec file <str<strong>on</strong>g>to</str<strong>on</strong>g> generate a unique kernel name.Change the line #% define buildid .local <str<strong>on</strong>g>to</str<strong>on</strong>g> %define buildid .test.Note that there is a space between the “%” and “define” that needs <str<strong>on</strong>g>to</str<strong>on</strong>g> be deleted.13. Use the rpmbuild utility <str<strong>on</strong>g>to</str<strong>on</strong>g> build the new RPM files.rpmbuild -bb --target=`uname -m` kernel.specThe build process takes some time <str<strong>on</strong>g>to</str<strong>on</strong>g> complete. If the build completes successfully, thenew kernel packages can be found in the ~/rpmbuild/RPMS/x86_64 direc<str<strong>on</strong>g>to</str<strong>on</strong>g>ry.7


82575/82576/82598/82599—<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>Cores</str<strong>on</strong>g>8. <str<strong>on</strong>g>Assign</str<strong>on</strong>g> interrupts <str<strong>on</strong>g>to</str<strong>on</strong>g> specific processors. Check the number of processor (cores) bychecking /proc/cpuinfo.cat /proc/cpuinfo | grep processorThe output looks like:processor : 0processor : 1processor : 2processor : 39. Check the proc filesystem for interrupts.The following table should appear in /proc/interrupts:CPU0 CPU1 CPU2 CPU329 139 0 0 0 PCI-MSI-edge eth1-rx-030 21 118 0 0 PCI-MSI-edge eth1-rx-131 21 0 118 0 PCI-MSI-edge eth1-rx-232 21 0 0 118 PCI-MSI-edge eth1-rx-333 139 0 0 0 PCI-MSI-edge eth1-tx-034 21 55 0 63 PCI-MSI-edge eth1-tx-135 71 0 68 0 PCI-MSI-edge eth1-tx-236 21 63 50 5 PCI-MSI-edge eth1-tx-337 0 0 0 0 PCI-MSI-edge eth1:lsc38 89 0 0 0 PCI-MSI-edge eth2-rx-039 21 68 0 0 PCI-MSI-edge eth2-rx-140 21 0 68 0 PCI-MSI-edge eth2-rx-241 21 0 0 68 PCI-MSI-edge eth2-rx-342 89 0 0 0 PCI-MSI-edge eth2-tx-043 21 68 0 0 PCI-MSI-edge eth2-tx-144 84 0 5 0 PCI-MSI-edge eth2-tx-245 21 0 63 5 PCI-MSI-edge eth2-tx-346 0 0 0 0 PCI-MSI-edge eth2:lscThe easiest way <str<strong>on</strong>g>to</str<strong>on</strong>g> assign the interrupts <str<strong>on</strong>g>to</str<strong>on</strong>g> queues is <str<strong>on</strong>g>to</str<strong>on</strong>g> use the set_irq_affinity.shscript that is included in the latest released ixgbe driversThe interrupts can be assigned <str<strong>on</strong>g>to</str<strong>on</strong>g> specific processors by assigning a processor <str<strong>on</strong>g>to</str<strong>on</strong>g> theinterrupts. The processor number is c<strong>on</strong>verted <str<strong>on</strong>g>to</str<strong>on</strong>g> a binary mask, so processor 0 is 1,processor 1 is 2, processor 2 is 4, processor 3 is 8 (2^processor_number).To assign eth3:v0-Rx (2290) <str<strong>on</strong>g>to</str<strong>on</strong>g> processor 1, echo the c<strong>on</strong>verted mask <str<strong>on</strong>g>to</str<strong>on</strong>g> /proc/irq/2290/smp_affinity.echo 2 > /proc/irq/2290/smp_affinityNote:The cores <strong>on</strong> <strong>on</strong>e socket of a dual-socket system are assigned n<strong>on</strong>-c<strong>on</strong>secutivenumbers. For example, <strong>on</strong> a dual-socket quad-core system Socket 0 has CPU 0, 2, 4, 6and Socket 1 has CPU 1, 3, 5, 7.11


<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>Cores</str<strong>on</strong>g>—82575/82576/82598/825991.5 Initializing IP ForwardingIP forwarding is initialized by default <strong>on</strong> reboot.1. Edit /etc/sysctl.c<strong>on</strong>f and change the line:net.ipv4.ip_forward = 0<str<strong>on</strong>g>to</str<strong>on</strong>g>net.ipv4.ip_forward = 12. Intitialize IP forwarding immediately.sudo sysctl -w net.ipv4.ip_forward=13. Set rp_filter <str<strong>on</strong>g>to</str<strong>on</strong>g> zero.net.ipv4.c<strong>on</strong>f.eth0.rp_filter=0and if desired:net.ipv4.c<strong>on</strong>f.all.rp_filter=02.0 Other Optimizati<strong>on</strong>s Found From PerformanceTestingTesting has shown increased performance with some stack tuning <strong>on</strong> Linux operatingsystems. The tuning mainly involves increasing resources for the network stack. Thisincludes increasing the TCP window size.These parameters are c<strong>on</strong>figurable using the sysctl utility in Linux as indicated in thisexample:sysctl -w net.core.rmem_default=524287Running sysctl without the -w argument lists the parameter with its current setting.Though increasing the values can help improve performance, it is necessary <str<strong>on</strong>g>to</str<strong>on</strong>g>experiment with different values <str<strong>on</strong>g>to</str<strong>on</strong>g> determine what works best for a given system,workload and traffic type.Note that these are <strong>on</strong>ly suggested starting points./proc/sys/net/core/rmem_default - default receive windowaaa(default=124928), suggested change <str<strong>on</strong>g>to</str<strong>on</strong>g> 524287/proc/sys/net/core/wmem_default - default send windowaaa(default=124928), suggested change <str<strong>on</strong>g>to</str<strong>on</strong>g> 524287/proc/sys/net/core/rmem_max - maximum receive windowaaa(default=131071), suggested change <str<strong>on</strong>g>to</str<strong>on</strong>g> 524287/proc/sys/net/core/wmem_max - maximum send windowaaa(default=131071), suggested change <str<strong>on</strong>g>to</str<strong>on</strong>g> 524287/proc/sys/net/core/optmem_max - maximum opti<strong>on</strong> memory buffersaaa(default=20480), suggested change <str<strong>on</strong>g>to</str<strong>on</strong>g> 52428712


82575/82576/82598/82599—<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>Cores</str<strong>on</strong>g>/proc/sys/net/core/netdev_max_backlog -number of unprocessed input packetsaaaabefore kernel starts dropping themaaa(default=1000), suggested change <str<strong>on</strong>g>to</str<strong>on</strong>g> 300000/proc/sys/net/ipv4/tcp_rmem - memory reserved for TCP rcv buffers (min defaultaaaamax)aaa(defaults 4096 87380 4194304), suggested change <str<strong>on</strong>g>to</str<strong>on</strong>g> 10000000 1000000010000000/proc/sys/net/ipv4/tcp_wmem - memory reserved for TCP snd buffers (min defaultaaaamax)aaa(defaults 4096 16384 4194304), suggested change <str<strong>on</strong>g>to</str<strong>on</strong>g> 10000000 10000000aaa110000000/proc/sys/net/ipv4/tcp_mem - memory reserved for TCP buffers (min default max)aaa(defaults 193152 257536 386304), suggested change <str<strong>on</strong>g>to</str<strong>on</strong>g> 10000000 10000000aaa1000000013


<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>Cores</str<strong>on</strong>g>—82575/82576/82598/82599Note:This page intenti<strong>on</strong>ally left blank.14


<str<strong>on</strong>g>Assign</str<strong>on</strong>g>ing <str<strong>on</strong>g>Interrupts</str<strong>on</strong>g> <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>Cores</str<strong>on</strong>g>—82575/825981.0 IP Forwarding and Pinning Queues <str<strong>on</strong>g>to</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g>s......................................................51.1 Assumpti<strong>on</strong>s.......................................................................................................51.2 Build a New Kernel ..............................................................................................61.3 Install the New Kernel and Restart the System ........................................................81.4 IGB and IXGBE Drivers ........................................................................................81.4.1 IGB ........................................................................................................81.4.2 IXGBE................................................................................................... 101.5 Initializing IP Forwarding .................................................................................... 122.0 Other Optimizati<strong>on</strong>s Found From Performance Testing ............................................ 121

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!