简化Linux网络故障排除和性能调整的一堆实用程序。
netutils-linux的Python项目详细描述
Netutils Linux
它是一个有用的实用程序,可以简化Linux网络故障排除和性能调整,是为了帮助Carbon Reductor技术支持和自动化整个Linux性能调整过程而开发的(好的,除了使用多个网络设备的最佳RSS布局检测)。这些实用程序对于网络负载很重的数据中心和Internet服务提供商可能很有用(您可能在桌面计算机上看不到效果)。它现在在300+部署的生产中使用,并且通过硬件和软件设置调试节省了我们很多时间。灵感来自packagecloud’s blog post。
用法
检查这个guide关于用法。
实用程序
监测
所有这些顶级实用程序都不需要根特权或sudo用法。因此,如果您关心安全性,可以将它们作为非私有用户安装和使用。
pip install --user netutils-linux
关于突出显示CPU和设备组的颜色的简要说明:绿色和红色表示NUMA节点,蓝色和黄色表示CPU插槽。截图是从不同的主机和不同的硬件。
网络顶部
这个repo中最有用的实用工具,包括几乎所有的linux网络堆栈性能指标,并允许监视中断、软中断、设备和cpu的网络处理统计。基于以下文件:
/proc/interrupts
(具有少量irq/秒的向量默认隐藏)/proc/net/softnet_stat
-CPU之间的数据包分布和错误/压缩率。/proc/softirqs
(仅限net rx和net tx值)。/sys/class/net/<NET_DEVICE>/statistic/<METRIC>
文件(您可以指定单位,mbit是默认值)
如果您只想查看特定的度量,也有单独的实用程序:irqtop、softirq top、softnet stat top、link rate。
snmptop
basic/proc/net/smmp文件监视程序。
调谐
RSS梯形图
自动为通常在cpu0上工作的nic rx/tx队列的irq设置smp_affinity_list
)。
基于LSCPU的输出。
对于多处理器系统,它还支持双/四阶梯(但最好显式地将queue count==core per socket指定为nic的驱动程序参数)。示例输出:
# rss-ladder eth1 0 - distributing interrupts of eth1 (-TxRx-) on socket 0 - eth1: irq 67 eth1-TxRx-0 -> 0 - eth1: irq 68 eth1-TxRx-1 -> 1 - eth1: irq 69 eth1-TxRx-2 -> 2 - eth1: irq 70 eth1-TxRx-3 -> 3 - eth1: irq 71 eth1-TxRx-4 -> 8 - eth1: irq 72 eth1-TxRx-5 -> 9 - eth1: irq 73 eth1-TxRx-6 -> 10 - eth1: irq 74 eth1-TxRx-7 -> 11
自动打印
为所有NIC的RX队列启用NIC的所有可用NUMA节点本地CPU上的RPS。它可能适合使用廉价网卡的小型服务器。您还可以明确地传递--cpus或--cpu-mask。示例输出:
# autorps eth0 Using mask 'fc0' for eth0-rx-0.
最大化CPU FRQ
将每个CPU缩放调控器模式设置为性能,并将最大缩放值设置为最小缩放值。因此,您将能够使用处理器的所有功能(对于延迟敏感的系统非常有用)。
接收缓冲区增加
rx缓冲区增加utils,它查找并设置避免丢失pkt和保持低延迟之间的折衷值。
示例输出:
# ethtool -g eth1 Ring parameters for eth1: Pre-set maximums: RX: 4096 ... Current hardware settings: RX: 256 # rx-buffers-increase eth1 run: ethtool -G eth1 rx 2048 # rx-buffers-increase eth1 eth1's rx ring buffer already has fine size. # ethtool -g eth1 Ring parameters for eth1: Pre-set maximums: RX: 4096 ... Current hardware settings: RX: 2048
硬件及其配置等级。服务器信息
与lshw非常相似,但设计用于服务器的网络处理角色。
有关服务器的信息
➜ vscale-vm git:(folding) ✗ server-info --showcpu:info:Architecture:x86_64BogoMIPS:4399Byte Order:Little EndianCPU MHz:2199CPU family:6CPU op-mode(s):32-bit, 64-bitCPU(s):1Core(s) per socket:1Flags:fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmonrep_good nopl eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apicmovbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lmabm 3dnowprefetch tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjustbmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt aratHypervisor vendor:KVML1d cache:32KL1i cache:32KL2 cache:256KL3 cache:25600KModel:79Model name:Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHzNUMA node(s):1NUMA node0 CPU(s):0On-line CPU(s) list:0Socket(s):1Stepping:1Thread(s) per core:1Vendor ID:GenuineIntelVirtualization:VT-xVirtualization type:fulllayout:'0':'0'disk:vda:model:nullsize:21474836480type:HDDmemory:devices:'0x1100':size:'512'speed:0type:RAMsize:MemFree:78272MemTotal:500196SwapFree:0SwapTotal:0net:eth0:buffers:cur:256max:256conf:ip:''vlan:falsedriver:driver:virtio_netversion:1.0.0queues:own:[]rx:[]rxtx:[]shared:[]tx:[]unknown:[]
总体服务器评级
➜ vscale-vm git:(folding) ✗ server-info --rate --serverserver:1.7666666666666664
子系统额定值
➜ vscale-vm git:(folding) ✗ server-info --rate --subsystemcpu:4.5disk:1.0memory:1.0net:1.3333333333333333system:1.0
设备额定值
➜ vscale-vm git:(folding) ✗ server-info --rate --devicecpu:BogoMIPS:2CPU MHz:2CPU(s):1Core(s) per socket:1L3 cache:9Socket(s):1Thread(s) per core:10Vendor ID:10disk:vda:1.0memory:devices:'0x1100':1.0size:1.0net:eth0:1.3333333333333333system:Hypervisor vendor:1Virtualization type:1
设备的详细额定值
➜ vscale-vm git:(folding) ✗ server-info --ratecpu:BogoMIPS:2CPU MHz:2CPU(s):1Core(s) per socket:1L3 cache:9Socket(s):1Thread(s) per core:10Vendor ID:10disk:vda:size:1type:1memory:devices:'0x1100':size:1speed:1type:1size:MemTotal:1SwapTotal:1net:eth0:buffers:cur:1max:1driver:2queues:1system:Hypervisor vendor:1Virtualization type:1
如何贡献?
关闭问题
欢迎任何帮助。只是评论一个问题“我想帮忙,我怎么能解决这个问题?“开始吧。