Articles of 内核

你如何检查Linux中* .ko内核模块的版本?

我知道你可以这样做: sudo modprobe -v some_module 检查/lib/modules/…/some_module.ko的版本,但是我仍然希望能够检查任何不一定会被modprobe加载的任意内核模块的版本。

systemd正常运行18天后使用4GB RAM

我有一台运行CentOS 7的networking服务器,系统进程在几个星期的正常运行时间之后使用了近4 GB的内存。 内存使用量正在稳步增加,每天大约200MB。 像systemd-logind和dbus-daemon这样的相关进程也会在很大程度上使用大量的CPU。 我的另一个使用“init”而不是systemd的CentOS 6服务器没有这样的资源使用情况。 在下面的例子中,systemd,systemd-logind,systemd-journal和dbus-daemon在正常的web服务中没有运行其他进程时,使用四核CPU的总计10.7%,而systemd占用了19%的系统的16GB的RAM。 这是不正常的行为,经过四处搜寻,我还没有发现任何其他人与这个问题。 什么可能导致这个资源被盗用? 任何build议,将不胜感激。 空闲期间从顶部输出(Web服务除外): top – 08:51:31 up 16 days, 13:43, 2 users, load average: 1.84, 1.39, 1.07 Tasks: 297 total, 2 running, 295 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.6 us, 3.6 sy, 0.0 ni, 90.6 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st KiB […]

为什么“lsmod | wc -l“不等于”ls / sys / module | wc -l“

为什么这两个命令返回不同的结果? lsmod | wc -l 100 ls /sys/module | wc -l 138

如何找出networking接口丢包的原因?

有没有办法在Linux上获得有关数据包丢失的各种原因的统计数据? 在多台服务器上的所有networking接口(openSUSE 12.3)上, ifconfig和netstat -i在接收时报告丢弃的数据包。 当我做一个tcpdump ,丢弃的数据包的数量停止增加,这意味着接口队列没有满并丢弃数据。 所以一定还有其他的原因(例如接收到多播包,而接口不是这个多播组的一部分)。 我在哪里可以find这样的信息? (/ proc?/ sys?一些日志?) 统计信息示例(/ sys / class / net / <dev> / statistics和ethtool输出的合并): alloc_rx_buff_failed: 0 collisions: 0 dropped_smbus: 0 multicast: 1644 rx_align_errors: 0 rx_broadcast: 23626 rx_bytes: 1897203 rx_compressed: 0 rx_crc_errors: 0 rx_csum_offload_errors: 0 rx_csum_offload_good: 0 rx_dropped: 4738 rx_errors: 0 rx_fifo_errors: 0 rx_flow_control_xoff: 0 rx_flow_control_xon: 0 rx_frame_errors: […]

如何解决高内核时间?

我在CPU上的内核时间非常高,如任务pipe理器中所示。 有什么方法可以解决这个问题?

如何在Linux内核中禁用perf子系统?

我正在运行一些基准。 我的基准跑步者监视实验之间的dmesg缓冲区,寻找任何可能影响性能的东西。 今天它扔了这个: [2015-08-17 10:20:14警告] dmesg似乎已经改变了! 差异如下: — 2015-08-17 09:55:00 +++ 2015-08-17 10:20:14 @@ -825,3 +825,4 @@ [3.802206] [drm]启用RC6状态:RC6开启,RC6pclosures,RC6ppclosures [7.900533] r8169 0000:06:00.0 eth0:连结 [7.900541] IPv6:ADDRCONF(NETDEV_CHANGE):eth0:链接已准备就绪 perf [236832.221937] perf中断时间过长(2504> 2500),将kernel.perf_event_max_sample_rate降至50000 经过一番search之后,我现在知道这涉及到linux内核中称为“perf”的剖析子系统。 我不认为我们需要这个,所以我想完全禁用它。 再次search,我发现sysctl perf_cpu_time_max_percent可以帮助。 这里有人build议通过将其设置为0来禁用它。在这里阅读更多: perf_cpu_time_max_percent: 向内核提示应该允许使用多lessCPU时间来处理perf采样事件。 如果perf子系统被告知其样本超过此限制,则会降低其采样频率以尝试降低其CPU使用率。 一些perf抽样发生在NMI中。 如果这些样本意外花费太长的时间执行,那么NMI可能会彼此紧挨在一起,以至于没有其他的东西可以执行。 0:禁用该机制。 不pipeCPU占用多less时间,都不要监视或纠正每个采样率。 1-100:尝试将perf的采样率调整到这个百分比的CPU。 注意:内核计算每个样本事件的“预期”长度。 这里的100意味着100%的预期长度。 即使设置为100,如果超过此长度,仍可能会看到样品限制。 设置为0,如果你真的不在乎多lessCPU消耗。 这对我来说听起来像0意味着分析采样率不再检查,但freq子系统保持运行(?)。 任何人都可以阐明如何彻底禁用与freq内核分析? 编辑:有人build议我尝试build立一个没有perf的内核,但我不认为这是可能的。 该选项似乎不可切换: 编辑2:更多的阅读后,我决定我可以设置kernel.perf_event_max_sample_rate为零。 即每秒没有采样。 但是,你不能这样做( 来源 ): […]

如何删除CentOS 6上的旧内核(释放启动分区)?

如何确定要删除哪些内核以释放/boot分区上的某些空间。 这是一个场景(一些背景信息)。 1. Parititon信息(如有帮助) # df -h Filesystem Size Used Avail Use% Mounted on … /dev/sda1 99M 81M 14M 86% /boot … 2.当前内核版本 # uname -a Linux serv.example.com 2.6.32-358.23.2.el6.x86_64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 3.安装了所有内核版本 # rpm -qa | grep kernel abrt-addon-kerneloops-2.0.8-21.el6.centos.x86_64 kernel-firmware-2.6.32-431.1.2.0.1.el6.noarch libreport-plugin-kerneloops-2.0.9-19.el6.centos.x86_64 kernel-headers-2.6.32-431.1.2.0.1.el6.x86_64 kernel-2.6.32-358.11.1.el6.x86_64 kernel-2.6.32-358.el6.x86_64 kernel-2.6.32-358.23.2.el6.x86_64 […]

奇怪:为什么在最后的ping回复后,linux响应ping请求呢?

我(和一位同事)刚刚注意到并testing过,当一台Linux机器被ping通时,在最后一次ping之后,它向发起ICMP ping的机器发起一个单播 ARP请求。 对Windows机器执行ping操作时,Windows机器最终不会发出ARP请求。 有人知道这个单播ARP请求的目的是什么,为什么它发生在Linux而不是Windows? Wireshark跟踪(Linux 10.20.30.45): No.Time Source Destination Prot Info 19 10.905277 10.20.30.14 10.20.30.45 ICMP Echo (ping) request 20 10.905339 10.20.30.45 10.20.30.14 ICMP Echo (ping) reply 21 11.904141 10.20.30.14 10.20.30.45 ICMP Echo (ping) request 22 11.904173 10.20.30.45 10.20.30.14 ICMP Echo (ping) reply 23 12.904104 10.20.30.14 10.20.30.45 ICMP Echo (ping) request 24 12.904137 10.20.30.45 […]

将增加net.core.somaxconn有所作为?

我在net.core.somaxconn参数中引入了一个参数:我被告知,如果我们改变默认值128,它不会有什么区别。 我相信这可能是足够的证据: “如果backlog参数大于/ proc / sys / net / core / somaxconn中的值,则会自动将其截断为该值” http://linux.die.net/man/2/listen 但事实并非如此。 有没有人知道一个方法来certificate这两台机器,坐在一个Gbitnetworking? 最好的办法是反对MySQL,LVS,apache2(2.2),memcached。

可以高负载导致服务器挂起和错误“封锁超过120秒”?

目前正在运行一些虚拟机和“裸机”服务器。 Java运行时间高达400%以上。 随机的服务器挂起在控制台“java – 被阻止超过120秒”的错误 – kjournald等 我不能得到一个dmesg输出,因为由于某种原因,这个错误只写入控制台,我不能访问,因为这是远程托pipe。 因此我无法复制完整的跟踪。 我改变了这个环境 – 甚至物理服务器,它仍然在发生。 我将hung_task_timeout_secs更改为0 incase,这是一个误报,根据http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Technical_Notes/deployment.html 。 另外,irqbalance没有安装,也许这会有所帮助? 这是Ubuntu 10.04 64bit – 与最新的2.6.38-15-server和2.6.36相同的问题。 可以cpu或内存问题/没有交换离开导致这个问题? 这里是控制台消息: [58Z?Z1.5?Z840] INFUI task java:21547 blocked for more than 120 seconds. [58Z?Z1.5?Z986] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this message. [58Z841.5?Z06Z] INFUI task kjournald:190 blocked for more than 120 seconds. [58Z841.5?Z336] "echo 0 > […]