简化Linux网络故障排除和性能调整的一堆实用程序。

netutils-linux的Python项目详细描述


Netutils Linux

travislandscapepypilicensepyversionscodeclimateissues

它是一个有用的实用程序,可以简化Linux网络故障排除和性能调整,是为了帮助Carbon Reductor技术支持和自动化整个Linux性能调整过程而开发的(好的,除了使用多个网络设备的最佳RSS布局检测)。这些实用程序对于网络负载很重的数据中心和Internet服务提供商可能很有用(您可能在桌面计算机上看不到效果)。它现在在300+部署的生产中使用,并且通过硬件和软件设置调试节省了我们很多时间。灵感来自packagecloud’s blog post

安装

你需要pip

pip install netutils-linux

用法

检查这个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是默认值)
https://cloud.githubusercontent.com/assets/3813830/26570951/acacf18c-452c-11e7-8fe7-5d0952f39d8b.gif

如果您只想查看特定的度量,也有单独的实用程序:irqtop、softirq top、softnet stat top、link rate。

snmptop

basic/proc/net/smmp文件监视程序。

https://user-images.githubusercontent.com/3813830/28242466-b51f27dc-69c5-11e7-8076-52819b9b7450.gif

调谐

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

如何贡献?

关闭问题

欢迎任何帮助。只是评论一个问题“我想帮忙,我怎么能解决这个问题?“开始吧。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
文件系统是否可以用java覆盖文件,使其无法恢复?   java在一个应用程序中集成Spring Boot和Node js   java如何使用MySQL后端设置Hibernate save()调用的超时?   java为什么我的Gremlin迁移查询只从每个顶点添加一条边?   java是否有方法提取单击的JPanel?   macos在MacOSX上为JDK7u4在Eclipse中设置什么JRE主页?   java JaxWsPortProxyFactoryBean查询超时   java SimpleDataFormat转换   java递归地打印序列:2,5,3,11,14,…   java在JPA查询中包含枚举   在Java8中创建内存泄漏   使用java 11的windows JFXPanel设置   hibernate Java NoClassDefFound错误