Articles of linux kernel

刷新进程消耗太多的CPU

服务器是EC2实例,它代表从HTTPD将文件保存到NAS(NFS)。 flush-0:32等进程消耗CPU的90%以上,平均负载为65.50,64.02,66.59。 从图中可以看出,每天增加的数量为4个,初始平均负荷为1.01,2.02,1.80。 我在Load Balancer下添加了另一个类似的实例,它的CPU利用率只有大约6%ATM。 这些冲洗过程究竟做了什么? 也许我们应该closuresNFS属性caching如果客户端只需要写入数据? 那可能是因为数据包碎片? 这里是一些nfsstat -s -4统计信息: ================================================================= Server 0: Server rpc stats: calls badcalls badauth badclnt xdrcall 715054137 0 0 0 0 Server nfs v4: null compound 993 0% 715053143 99% Server nfs v4 operations: op0-unused op1-unused op2-future access close commit 0 0% 0 0% 0 0% 143229323 6% 78092765 […]

tc u32 – 如何在最近的内核中匹配L2协议?

我有一个很好的整形器,在linux网桥上build立了哈希filter。 简而言之, br0连接external和internal物理接口,VLAN标记的数据包被“透明地”桥接(我的意思是没有VLAN接口)。 现在,不同的内核做不同的事情。 我可以错误的确切的内核版本范围,请原谅我。 谢谢。 2.6.26 所以,在debian中,2.6.26及以上(我相信达2.6.32)—这个工作: tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \ u32 ht 1:64 match ip dst 192.168.1.100 flowid 1:200 在这里,“内核”与0x8100“协议”字段中的两个字节相匹配,但将ip数据包的开始计数为“零位”(对于我的英文,如果我有点不清楚,那么抱歉)。 2.6.32 再次,在debian(我没有build立香草核),2.6.32-5 —这个工作: tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \ u32 ht 1:64 match ip dst 192.168.1.100 at 20 flowid […]

为什么/ proc / net / tcp6表示:: 1 as :: 100:0

我正在编写一个实用程序来检查/ proc / net / tcp和tcp6作为活动连接,因为它比parsingnetstat输出更快。 由于我实际上没有启用ipv6,我主要是利用本地主机作为我的参考点。 这里是我的/ proc / net / tcp6的副本 sl local_address remote_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode 0: 00000000000000000000000000000000:006F 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 19587 1 ffff880262630000 100 0 0 10 -1 1: 00000000000000000000000000000000:0050 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 22011 1 ffff880261c887c0 100 […]

我怎样才能调整初始TCP重传超时?

对于大多数基于LAN的应用程序来说,初始的TCP RTO值3s太长。 我怎样才能调低呢? 有没有一个sysctl?

Linux内核检测错误的处理器频率

在6.0.8 Debian服务器(HP ProLiant)的冷启动之后, ntpd对系统时间造成了严重的影响:相对于通常可靠的参考时间服务器而言,偏移量和抖动增长不受限制。 (请注意,一个双胞胎相同的服务器没有任何问题。)经过许多不成功的尝试解决ntpd方面的问题,我决定尝试重新启动,一切正常。 为了调查这个问题,我发现这个差异,这可以解释我的时钟问题: root@n1:~# zgrep Detected /var/log/dmesg* /var/log/dmesg:[ 0.004000] Detected 2400.110 MHz processor. /var/log/dmesg.0:[ 0.004000] Detected 2383.579 MHz processor. /var/log/dmesg.1.gz:[ 0.004000] Detected 2400.036 MHz processor. /var/log/dmesg.2.gz:[ 0.004000] Detected 2400.298 MHz processor. /var/log/dmesg.3.gz:[ 0.004000] Detected 2400.165 MHz processor. /var/log/dmesg.4.gz:[ 0.004000] Detected 2400.410 MHz processor. 请注意,在第二次启动(有问题的启动)中,检测到的CPU频率是明显的exception值。 没有exception值时,检测到的频率相对于标称值的误差和标准偏差为+ 0.15MHz±0.25MHz。 对于有问题的启动,我有一个-16.4 Mhz的错误,这比预期的大约100倍。 我的问题: 这种types的错误可以使ntp时间不稳定/不可用? 这是我的时钟问题的原因? 这种types的行为是硬件硬件的症状吗? […]

在CentOS 6.x中,我如何升级到Kernel 3.4?

我有一台运行内核版本为2.6.32的CentOS 6.2的服务器,但是我需要增加我的应用程序性能。 内核版本3.4有x32abi可以提高性能,所以我想升级到3.4? 可能吗? 我尝试下载内核编译和安装,但仍然看到相同的内核版本.. 什么地方出了错? 我遵循下面的链接中提到的过程。 http://www.tecmint.com/kernel-3-5-released-install-compile-in-redhat-c​​entos-and-fedora/

为什么CPU花在IO(wa)上的时间?

我知道wa (在top )测量等待I / O的CPU时间。 很多文章都这么说。 但我很困惑,根据2个知识点: 如果进程使用系统调用来读取磁盘,则进程被阻止。 如果某个进程被阻塞,则不能在CPU上运行。 对? CPU看起来没有时间在I / O上等待…会发生什么? 如果推荐一些书或文章给我进一步阅读,那么更好。

现代文件系统中数百万文件的性能影响是什么?

假设我们使用ext4(启用了dir_index)来托pipe3M文件(平均大小为750KB),我们需要决定我们要使用的文件夹scheme。 在第一种解决scheme中 ,我们将散列函数应用于文件,并使用两个级别文件夹(第一级为1个字符,第二级为2个字符):因此,作为filex.for散列等于abcde1234 ,我们将其存储on / path / a / bc /abcde1234-filex.for。 在第二种解决scheme中 ,我们将散列函数应用于文件,并使用两个级别文件夹(第一级为2个字符,第二级为2个字符):因此,作为filex.for散列等于abcde1234 ,我们将其存储on / path / ab / de /abcde1234-filex.for。 对于第一个解决scheme,我们将有以下scheme/path/[16 folders]/[256 folders] , 每个文件夹 (文件所在的最后一个文件夹) 平均为732个文件 。 在第二种解决scheme中,我们将拥有/path/[256 folders]/[256 folders] , 每个文件夹的平均文件数为45个 。 考虑到我们要从这个scheme中写很多(基本上是nginxcaching系统)的文件( 但大多是读取 ),从性能的angular度来看,如果我们select了一个或其他的解决scheme呢? 另外,我们可以使用什么工具来检查/testing这个设置?

在一个ext3目录中的文件的最大数量仍然可以接受的性能?

我有一个应用程序写入一个ext3目录,随着时间的推移,已经增长到大约三百万个文件。 不用说,读这个目录的文件列表是不可忍受的慢。 我不怪责ext3。 正确的解决办法是让应用程序代码写入子目录,例如./a/b/c/abc.ext而不是仅使用./abc.ext 。 我正在改变这样的子目录结构,我的问题是:大概有多less文件应该存储在一个ext3目录,同时仍然可以接受的性能? 你有什么经验? 换句话说, 假设我需要在结构中存储300万个文件,那么./a/b/c/abc.ext结构应该有多less层次? 显然这是一个不能准确回答的问题,但我正在寻找一个球场的估计。

我如何让Linux识别出一个新的SATA / dev / sda驱动器,我无需重启就可以热插拔?

热插拔一个失败的SATA / dev / sda驱动器工作正常,但是当我去交换一个新的驱动器时,它不被识别: [root@fs-2 ~]# tail -18 /var/log/messages May 5 16:54:35 fs-2 kernel: ata1: exception Emask 0x10 SAct 0x0 SErr 0x50000 action 0xe frozen May 5 16:54:35 fs-2 kernel: ata1: SError: { PHYRdyChg CommWake } May 5 16:54:40 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0) May 5 16:54:45 […]