Questions tagged «kernel»

在计算中,内核是大多数计算机操作系统的主要组成部分。它是应用程序与在硬件级别完成的实际数据处理之间的桥梁。内核的职责包括管理系统资源(硬件和软件组件之间的通信)。

23
rm包含数百万个文件的目录
背景:物理服务器,已有大约两年的历史,已将7200-RPM SATA驱动器连接到3Ware RAID卡,安装了ext3 FS的noatime和data = ordered,没有疯狂的负载,内核2.6.18-92.1.22.el5,正常运行时间为545天。目录不包含任何子目录,仅包含数百万个小文件(〜100字节),还有一些大文件(几KB)。 在过去的几个月中,我们的服务器出现了一些故障,但是直到几天前,由于包含太多文件,它才开始无法写入目录,因此我们才注意到它。具体来说,它开始在/ var / log / messages中引发此错误: ext3_dx_add_entry: Directory index full! 有问题的磁盘上还有许多索引节点剩余: Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 60719104 3465660 57253444 6% / 因此,我猜测这意味着我们达到了目录文件本身中可以包含多少个条目的限制。不知道会有多少个文件,但是正如您所看到的,最多不能超过300万个左右。不好意思,请注意!但这是我的问题之一:上限到底是多少?可调吗?在我得到大叫,我想调整它下来 ; 这个巨大的目录引起了各种各样的问题。 无论如何,我们在生成所有这些文件的代码中找到了问题,并已进行了纠正。现在,我一直坚持删除目录。 这里有一些选择: rm -rf (dir) 我先试了 在运行了一天半之后,没有任何明显的影响,我放弃并杀死了它。 目录上的unlink(2):绝对值得考虑,但问题是,通过fsck删除目录中的文件是否比通过unlink(2)删除要快。也就是说,我必须将那些inode标记为未使用。当然,这是假定我可以告诉fsck不要将条目丢弃到/ lost + found中的文件中。否则,我只是解决了我的问题。除了所有其他问题外,在阅读了更多内容之后,事实证明我可能必须调用一些内部FS函数,因为我找不到的unlink(2)变体都不允许我随意删除在其中包含条目的目录。呸。 while [ true ]; do ls …
104 kernel  ext3  rm  directory 

7
如何列出已加载的Linux模块参数值?
有没有列出列出已加载的Linux模块的参数值的标准方法?我本质上是在寻找这个Linux内核模块参数问题的另一个答案,因为我感兴趣的模块没有/sys/modules/<module_name>/parameters接口。
76 linux  kernel 

2
“ dd”中的“ bs”选项是否真的提高了速度?
我不时被告知要提高“ dd”的速度,我应该仔细选择合适的“块大小”。 即使在此处,在ServerFault上,其他人也写道:“ ...最佳块大小取决于硬件... ” (固有)或“ ...最佳大小将取决于您的系统总线,硬盘驱动器控制器,特定驱动器本身,以及每个驱动程序的驱动程序... “ (chris-s) 由于我的感觉有些不同(顺便说一句:我坚信,对bs参数进行深度调整所需的时间比所节省的时间要长得多,并且默认值是合理的),今天我就去了通过一些肮脏的基准测试。 为了降低外部影响,我决定阅读: 从外部MMC卡 从内部分区 和: 带有相关的文件系统 将输出发送到/ dev / null以避免与“写入速度”有关的问题; 至少在涉及HDD时避免一些HDD缓存的基本问题。 在下表中,我报告了我的发现,读取了1GB的数据,其中包含不同的“ bs”值(您可以在此消息末尾找到原始数字): 基本上结果是: MMC:bs = 4(是!4个字节)时,我达到了12MB / s的吞吐量。距离bs = 5及以上的最大值14.2 / 14.3不太远。 硬盘:bs = 10时达到30 MB / s。肯定比默认bs = 512时的95.3 MB低,但是...也很重要。 同样,很明显,CPU的系统时间与bs值成反比(但这听起来很合理,因为bs越低,dd产生的系统调用次数就越高)。 综上所述,现在的问题是:有人可以解释(内核黑客吗?)这种吞吐量涉及的主要组件/系统是什么,是否真的值得努力指定比默认值高的bs? MMC案例-原始数字 bs = 1M root@iMac-Chiara:/tmp# time dd …
58 linux  kernel  dd  disk-image 

4
在Linux中禁用交换的最佳方法
我正在运行一个自定义的已编译3.18.9内核,我想知道在系统上禁用交换的最佳方法。如果有区别,我也会使用init。 在注释掉或删除掉交换行/etc/fstab以防止交换在启动时无法正常工作/挂载是否足够?我是否应该重新编译内核,而不必Support for paging of anonymous memory (swap)百分百确定它没有启用? 我运行加密分区,并希望防止意外泄漏到硬盘上。我的系统规格也足够出色,可以在无交换环境中生存。
53 linux  kernel  swap  init 

1
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,但将amarok vm.overcommit_memory设置为0 时,其工作不会出现问题。但是,如果将2amarok 设置为,则amarok需要分配超过2GiB的内存。这是正常现象吗?如果是这样,那么谁能解释一下,为什么firefox(消耗的内存比amarok多4-6倍)为何在更改前后都以相同的方式工作?
49 memory  kernel  sysctl 

3
软限制与硬限制?
谁能用外行的术语解释软限制和硬限制的区别是什么? 我是否应该将软限制和硬限制设置为相同?还是应该大大降低软度?系统对这两种方式都有好处吗? 谢谢。
43 linux  ubuntu  kernel  ulimit 


2
内核卸载后损坏的/ vmlinuz和/initrd.img符号链接
操作系统:Ubuntu 8.04 LTS Server Edition 我们只是使用以下命令回滚了内核更新: sudo apt-get remove linux-image-2.6.24-24-server 卸载成功,但是apt-get退出之前有以下消息: The link /vmlinuz is a damaged link Removing symbolic link vmlinuz you may need to re-run your boot loader[grub] The link /initrd.img is a damaged link Removing symbolic link initrd.img you may need to re-run your boot loader[grub] 我们应该担心这个消息吗?我们需要重新运行GRUB吗?如果必须重新运行GRUB,我们该怎么做? …

6
通过大量连接和小数据包高流量提高千兆网络上的TCP性能
我正在尝试通过“具有大量连接和小数据包高流量的千兆网络”来提高TCP吞吐量。我的服务器操作系统是Ubuntu 11.10 Server 64bit。 通过TCP套接字(都在同一端口上)连接到我的服务器的大约50,000个(并且正在增长)客户端。 我的数据包中有95%的大小为1-150字节(TCP标头和有效载荷)。其余5%从150到4096+字节不等。 通过下面的配置,我的服务器可以处理高达30 Mbps(全双工)的流量。 您能建议最佳实践来调整操作系统以满足我的需求吗? 我的/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 = …

4
默认关闭Linux OOM杀手吗?
Linux上的OOM杀手经常对各种应用程序造成破坏,并且似乎并没有在内核开发方面做太多改进。作为设置新服务器的最佳实践,将内存过量使用的默认设置反转为默认值,也就是将其关闭(vm.overcommit_memory=2),除非您知道要为特定用途打开它,否则会更好吗?在您知道要过度使用的情况下,这些用例将是什么? 另外,由于行为vm.overcommit_memory=2取决于vm.overcommit_ratio和交换空间,因此,调整后两者的大小以使整个设置合理地工作将是一个很好的经验法则吗?
37 linux  memory  kernel  oom 


4
在内核树上执行“ make oldconfig”时自动回答默认值
在基于先前的配置构建新内核时,是否有一种方法可以自动执行该make oldconfig过程,以便将新选项设置为其默认值? 编辑:我的意思是,当在较新的内核上使用.config(从/boot/config-*或/proc/config.gz)时,该make oldconfig过程将询问您是否要启用旧内核中不可用的选项。您可以回答Y / n / m或按Enter接受默认值。我想在没有用户交互的情况下自动接受默认值。
36 linux  kernel 

2
ulimit -n和/ proc / sys / fs / file-max有何区别?
我注意到在刚从EC2启动的新CentOS映像上,ulimit的默认值为1024个打开的文件,但是/ proc / sys / fs / file-max设置为761,408,我想知道这两个限制是如何工作的一起。我猜测ulimit -n是每个用户的文件描述符数量限制,而/ proc / sys / fs / file-max是系统范围的?如果是这种情况,请说我已经以同一用户身份登录过两次-每个登录用户的打开文件数是否有1024个限制,或者每个登录用户之间限制有1024个合并的打开文件,在用户中? 如果您的系统从未打开太多文件,那么将最大文件描述符设置为很高的数量是否会对性能产生很大影响?
32 linux  bash  kernel  ulimit 

3
尽管SYN_RECV连接数较少,但日志中仍存在“可能的SYN泛洪”
最近,我们有一个apache服务器,由于SYN泛洪,响应速度非常慢。解决方法是启用tcp_syncookies(net.ipv4.tcp_syncookies=1 in /etc/sysctl.conf)。 如果您需要更多背景知识,我在这里发布了一个与此有关的问题。 启用syncookie之后,我们大约每60秒开始在/ var / log / messages中看到以下消息: [84440.731929] possible SYN flooding on port 80. Sending cookies. Vinko Vrsalovic告诉我,这意味着syn待办事项已满,因此我将tcp_max_syn_backlog提高到4096。在某些时候,我还通过发出来将tcp_synack_retries降低到3(从默认值5降低)sysctl -w net.ipv4.tcp_synack_retries=3。之后,频率似乎下降了,消息间隔大约在60到180秒之间变化。 接下来,我发出sysctl -w net.ipv4.tcp_max_syn_backlog=65536,但仍在日志中获取消息。 在所有这些过程中,我一直在观察SYN_RECV状态下的连接数(通过运行watch --interval=5 'netstat -tuna |grep "SYN_RECV"|wc -l'),它从不超过约240个,远低于积压的大小。但是我有一台Red Hat服务器,它徘徊在512左右(此服务器的限制是默认值1024)。 是否还有其他tcp设置会限制待办事项的大小,或者我吠叫了错误的树?SYN_RECV连接的数量是否应该netstat -tuna与待办事项的大小相关? 更新资料 尽我所能告诉我,我在这里处理合法连接,netstat -tuna|wc -l徘徊在5000左右。我今天一直在研究此问题,并从last.fm员工那里找到了这篇帖子,这非常有用。 我还发现启用syncookies时tcp_max_syn_backlog不起作用(按照此链接) 因此,下一步,我在sysctl.conf中设置以下内容: net.ipv4.tcp_syn_retries = 3 # default=5 net.ipv4.tcp_synack_retries = 3 …
30 linux  tcp  kernel  flooding 

1
增加net.core.somaxconn会有所作为吗?
我在net.core.somaxconn参数上遇到了一个参数:有人告诉我,如果更改默认值128,它不会有任何区别。 我相信这可能足以证明: “如果backlog参数大于/ proc / sys / net / core / somaxconn中的值,那么它将被默默地截断为该值” http://linux.die.net/man/2/listen 但事实并非如此。 有谁知道一种方法来通过两台位于Gbit网络上的机器进行验证?最好是针对MySQL,LVS,apache2(2.2),memcached。

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.