Questions tagged «linux-kernel»

Linux内核是Linux类Unix操作系统家族使用的操作系统内核。它是自由和开源软件最突出的例子之一。


2
配置vm.overcommit_memory的效果
我的VPS Web服务器在CentOS 5.4(Linux内核2.6.16.33-xenU)上不定期运行(例如每月一次或几周一次),由于oom-killer的介入而无法响应。对服务器的监视表明它没有通常每隔一段时间就会耗尽内存。 我已经阅读了指向该页面的两个博客,讨论了如何使用以下sysctl设置配置内核以更好地管理过量使用: vm.overcommit_memory = 2 vm.overcommit_ratio = 80 我对此的理解(这可能是错误的,但是我找不到规范的定义要澄清),这可以防止内核在交换+ 80%的物理内存之外过度分配内存。 但是,我还阅读了其他一些资料,建议这些设置不是一个好主意-尽管对此方法的批评者似乎在说:“不要做任何事情来破坏您的系统,而不是尝试进行这种麻烦”,但前提是:因果关系是众所周知的。 所以我的问题是,在托管大约10个低流量站点的Apache2 Web服务器的情况下,这种方法的优缺点是什么?在我的特定情况下,Web服务器具有512Mb RAM和1024Mb交换空间。在大多数情况下,这似乎是足够的。

11
如何使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 …

5
现代文件系统中数百万个文件的性能影响是什么?
假设我们正在使用ext4(启用dir_index)来托管大约3M文件(平均大小为750KB),并且我们需要确定要使用的文件夹方案。 在第一个解决方案中,我们对文件应用哈希函数,并使用两个级别的文件夹(第一级为1个字符,第二级为2个字符):因此,作为filex.for哈希值等于abcde1234,我们将其存储在/ path中/ a / bc /abcde1234-filex.for。 在第二个解决方案中,我们对文件应用哈希函数,并使用两个级别的文件夹(第一级为2个字符,第二级为2个字符):因此,作为filex.for哈希值等于abcde1234,我们将其存储在/ path中/ ab / de /abcde1234-filex.for。 对于第一个解决方案,我们将采用以下方案/path/[16 folders]/[256 folders],每个文件夹平均有732个文件(文件所在的最后一个文件夹)。 而在第二个解决方案,我们将有/path/[256 folders]/[256 folders]与平均每个文件夹45页的文件。 考虑到我们将大量(基本上是nginx缓存系统)从该方案中写入/取消链接/读取文件(但大部分是read),从性能的角度来说,如果我们选择一种或其他解决方案,它是否很重要? 另外,我们可以使用哪些工具来检查/测试此设置?

9
一个ext3目录中的最大文件数,同时仍能获得可接受的性能?
此问题已从堆栈溢出迁移,因为可以在服务器故障时回答。 迁移 9年前。 我有一个应用程序写入ext3目录,随着时间的推移,该目录已增长到大约300万个文件。不用说,读取此目录的文件列表的速度令人难以忍受。 我不怪ext3。正确的解决方案是让应用程序代码写入子目录,例如./a/b/c/abc.ext而不是only ./abc.ext。 我正在更改为这样的子目录结构,而我的问题很简单:我希望在一个ext3目录中存储多少文件,同时仍然可以获得可接受的性能?您的经验是什么? 或者换句话说;假设我需要在结构中存储300万个文件,该结构应深入多少层./a/b/c/abc.ext? 显然,这是一个无法完全回答的问题,但是我正在寻找一个估计的数字。

4
Linux内存碎片
此问题已从堆栈溢出迁移,因为可以在服务器故障时回答。 迁移 9年前。 有没有一种方法可以检测Linux上的内存碎片?这是因为在某些长时间运行的服务器上,我注意到性能下降,并且只有在重新启动进程后,我才能看到更好的性能。在使用linux大型页面支持时,我注意到的更多-Linux中的大型页面是否更容易碎片化? 我特别看了/ proc / buddyinfo。我想知道是否有更好的方法(不仅仅是CLI命令本身,任何程序或理论背景都可以)查看它。

2
为什么CPU在IO(wa)上花费时间?
我知道wa(中top)衡量等待I / O时的CPU时间。许多文章都这么说。 但是基于两个知识点,我感到困惑: 如果某个进程使用系统调用读取磁盘,则该进程将被阻止。 如果某个进程被阻止,则无法安排该进程在CPU上运行。 对? 似乎没有时间让CPU等待I / O ...会发生什么? 如果推荐一些书或文章供我进一步阅读,那就更好了。

1
具有xfs,20个磁盘和Ceph的“大型”服务器上页面碎片的原因
任何有Linux IO系统经验的人的任何见解都会有所帮助。这是我的故事: 最近建立了一个由六个Dell PowerEdge rx720xds组成的集群,用于通过Ceph提供文件。这些机器在两个插槽上具有24个内核,并具有两个numa区域和70奇吉字节的内存。磁盘格式化为每个磁盘的RAID(否则,我们看不到直接公开磁盘的方法)。网络由IB上的mellanox infiniband IP提供(IP数据包在内核区域(而非硬件)转换为IB)。 我们将每个SAS驱动器安装如下: # cat /proc/mounts | grep osd /dev/sdm1 /var/lib/ceph/osd/ceph-90 xfs rw,noatime,attr2,inode64,noquota 0 0 /dev/sdj1 /var/lib/ceph/osd/ceph-87 xfs rw,noatime,attr2,inode64,noquota 0 0 /dev/sdu1 /var/lib/ceph/osd/ceph-99 xfs rw,noatime,attr2,inode64,noquota 0 0 /dev/sdd1 /var/lib/ceph/osd/ceph-82 xfs rw,noatime,attr2,inode64,noquota 0 0 /dev/sdk1 /var/lib/ceph/osd/ceph-88 xfs rw,noatime,attr2,inode64,noquota 0 0 /dev/sdl1 /var/lib/ceph/osd/ceph-89 xfs rw,noatime,attr2,inode64,noquota 0 0 …

2
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频率明显是异常值。如果没有异常值,则检测到的频率相对于标称频率的误差和标准偏差为+0.15 MHz±0.25 MHz。对于有问题的启动,我有-16.4 Mhz的错误,它比预期的大100倍左右。 我的问题: 这种错误会导致ntp时间纪律不稳定/无法使用吗?这是我的时钟出现问题的原因吗? …

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

2
CoreOS:tcpdump神秘地解决了网络问题(使用的套接字数量过多)
我今天对你有一个谜。我们在Azure上运行基于CoreOS(2023.5.0 / Linux 4.19.25-coreos)的小型三节点Elasticsearch群集。Elasticsearch在主机网络模式下在docker容器内运行。在运行了几乎完全免费的维护一年之后,我们一直看到机器进入一种非常有趣的状态。 更新资料 通过修复Linux内核中的驱动程序可以解决此问题。请参阅下面的答案。 病征 基本上,受影响的计算机与其他两个节点之间的网络连接消失。所有这些都位于同一虚拟网络和同一子网中,并且通常可以与其他服务器通信。仍然可以从其他子网(我可以将其连接到该子网)和其他对等虚拟网络访问受影响的节点。该计算机还具有(非常多)互联网连接,但是大多数请求只是超时。 我们已经观察到,在受影响的节点上,报告的“已使用套接字”的/proc/net/sockstat数量非常高(在正常节点上为〜4.5k,而不是〜300)。监视显示,此数目从节点不可用的那一刻起迅速增加。 有趣的是,我们似乎无法识别这些二手插座的来源: # cat /proc/net/sockstat sockets: used 4566 TCP: inuse 2 orphan 0 tw 2 alloc 98 mem 4 UDP: inuse 1 mem 0 UDPLITE: inuse 0 RAW: inuse 0 FRAG: inuse 0 memory 0 # cat /proc/net/sockstat6 TCP6: inuse 98 UDP6: …

1
net.core.rmem_max和net.ipv4.tcp_rmem之间的区别
net.core.rmem_max和net.ipv4.tcp_rmem的第三个值之间有什么区别?哪个具有较高的TCP连接优先级? 对于下面的两个示例,tcp连接的最大缓冲区是多少? Case 1: sysctl -w net.core.rmem_max=7388608 sysctl -w net.ipv4.tcp_rmem='4096 87380 8388608' Case 2: sysctl -w net.core.rmem_max=8388608 sysctl -w net.ipv4.tcp_rmem='4096 87380 7388608'


2
如何避免Linux下的停机时间?
通常,对Ubuntu的软件更新需要重新启动(这可能会带来诸如停机等副作用)。 我看到Ubuntu具有https://www.ubuntu.com/livepatch,它允许内核更新而无需重新启动,但是,这是一项付费服务​​。也有ksplice。 是否存在Linux发行版/进程,其中升级/修补程序从不需要重启? (我知道设置高可用性(HA)服务器和使用一次性服务器是最佳做法-因此,我不是在问要保持服务状态,而是在实际服务器上。)

3
为什么/ proc / net / tcp6将:: 1表示为:: 100:0
我正在编写一个实用程序来检查/ proc / net / tcp和tcp6是否有活动连接,因为它比解析netstat输出更快。 因为我实际上没有启用ipv6,所以我主要是使用localhost作为参考点。这是我的/ 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 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.