Articles of 内核

我怎样才能找出是什么导致中断在Windows上?

偶尔我遇到处理器%中断时间较长的服务器(Windows 2003和2008)。 有没有办法看到什么程序或设备造成中断?

尽pipeSYN_RECV连接数很less,但日志中可能出现“SYN泛洪”

最近我们有一个Apache服务器,由于SYN泛滥,响应非常缓慢。 解决方法是启用tcp_syncookies( net.ipv4.tcp_syncookies=1 in /etc/sysctl.conf )。 我在这里发布了一个关于这个问题,如果你想更多的背景。 启用syncookies后,我们开始每隔60秒在/ var / log / messages中开始看到以下消息: [84440.731929] possible SYN flooding on port 80. Sending cookies. Vinko Vrsalovic告诉我,这意味着syn backlog已经满了,所以我把tcp_max_syn_backlog提高到了4096.在某些时候,我还通过发行sysctl -w net.ipv4.tcp_synack_retries=3将tcp_synack_retries降低到了3(从默认值5降低了) 。 这样做后,频率似乎下降,消息的间隔大约60和180秒之间变化。 接下来我发出了sysctl -w net.ipv4.tcp_max_syn_backlog=65536 ,但是我仍然在日志中收到消息。 在这一切中,我一直在观察SYN_RECV状态下的连接数(通过运行watch –interval=5 'netstat -tuna |grep "SYN_RECV"|wc -l' ),它永远不会高于240远远低于积压的大小。 然而,我有一个红帽服务器徘徊在512左右(限制在这台服务器是默认的1024)。 有没有其他的tcp设置会限制积压的大小,还是我吠叫错误的树? netstat -tuna的SYN_RECV连接的数量是否与积压的大小相关? 更新 尽我所能告诉我在这里处理合法的连接, netstat -tuna|wc -l徘徊在5000左右。我今天一直在研究这个,并且从last.fm员工那里find了这个post , 这个post非常有用。 我还发现,当syncookies被启用时,tcp_max_syn_backlog没有效果(按照这个链接 ) 所以作为下一步,我在sysctl.conf中设置了以下内容: […]

如何查看哪些内核选项是在不查看/ boot / config- *的情况下编译的

如果我没有访问剩余的/ boot / config- *文件,如何检查哪些选项被编译到Linux内核中?

在具有大量连接和高数据包stream量的千兆networking上提高TCP性能

我试图通过一个“有很多连接和高stream量小包的千兆networking”来提高我的TCP吞吐量。 我的服务器操作系统是Ubuntu 11.10 Server 64bit。 通过TCP套接字连接到我的服务器(全部在同一端口)有大约50,000(和增长)的客户端。 我的数据包中的95%的大小为1-150字节(TCP报头和有效载荷)。 剩下的5%从150到4096+字节不等。 使用下面的configuration我的服务器可以处理高达30 Mbps(全双工)的stream量。 你可以请build议最佳实践调整操作系统为我的需要? 我的/etc/sysctl.cong看起来像这样: kernel.pid_max = 1000000 net.ipv4.ip_local_port_range = 2500 65000 fs.file-max = 1000000 # net.core.netdev_max_backlog=3000 net.ipv4.tcp_sack=0 # net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.somaxconn = 2048 # net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_mem = […]

vm.overcommit_memory是如何工作的?

当我使用默认设置时: vm.overcommit_memory = 0 vm.overcommit_ratio = 50 我可以从/proc/meminfo文件读取这些值: CommitLimit: 2609604 kB Committed_AS: 1579976 kB 但是,当我将vm.overcommit_memory从0更改为2 ,我无法启动在更改之前启动的同一组应用程序,特别是amarok。 我必须将vm.overcommit_ratio更改为300 ,因此可以增加限制。 现在,当我启动amarok时, /proc/meminfo显示如下: CommitLimit: 5171884 kB Committed_AS: 3929668 kB 这台机器只有1GiB的RAM,但是当vm.overcommit_memory设置为0时,amarok没有问题。但是在设置为2的情况下,amarok需要分配超过2GiB的内存。 这是一个正常的行为? 如果是这样,任何人都可以解释为什么,例如,firefox(消耗比amarok多4-6倍的内存)在更改之前和之后以相同的方式工作?

如何列出加载的Linux模块参数值?

有一个标准的方式来列出一个加载的Linux模块的参数值? 我本质上是探讨这个Linux内核模块参数问题的另一个答案,因为我感兴趣的模块没有/sys/modules/<module_name>/parameters接口。