Questions tagged «kernel»

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

4
内核堆栈跟踪到源代码行
给定如下所示的内核堆栈跟踪,如何确定发生问题的特定代码行? kernel: [<ffffffff80009a14>] __link_path_walk+0x173/0xfb9 kernel: [<ffffffff8002cbec>] mntput_no_expire+0x19/0x89 kernel: [<ffffffff8000eb94>] link_path_walk+0xa6/0xb2 kernel: [<ffffffff80063c4f>] __mutex_lock_slowpath+0x60/0x9b kernel: [<ffffffff800238de>] __path_lookup_intent_open+0x56/0x97 kernel: [<ffffffff80063c99>] .text.lock.mutex+0xf/0x14 kernel: [<ffffffff8001b222>] open_namei+0xea/0x712 kernel: [<ffffffff8006723e>] do_page_fault+0x4fe/0x874 kernel: [<ffffffff80027660>] do_filp_open+0x1c/0x38 kernel: [<ffffffff8001a061>] do_sys_open+0x44/0xbe kernel: [<ffffffff8005d28d>] tracesys+0xd5/0xe0 虽然我可以很轻松地找到函数调用-但是将__link_path_walk加上偏移量转换为实际的行号是困难的部分。 假设这是针对标准发行版提供的内核的,我知道该内核的确切版本和内部版本号,那么获取必要的元数据并进行相应查找的过程是什么?

8
内核更新后重新引导Linux重要吗?
我有一些生产Fedora和Debian Web服务器,它们托管着我们的网站以及用户外壳程序帐户(用于git vcs工作,一些screen + irssi会话等)。 有时会在yum/ 的管道中进行新的内核更新apt-get,我想知道大多数修补程序是否严重到足以保证可以重新引导,或者我是否可以在不重新引导的情况下应用这些修补程序。 我们的主要开发服务器目前有213天的正常运行时间,我不确定运行这样一个较旧的内核是否不安全。
19 linux  kernel  update 

3
将EC2 AMI转换为vmdk映像
由于有了这个答案和这些 网站,我已经非常接近让Amazon Linux在VirtualBox中启动。我已采取的步骤的快速概述: 使用Amazon Linux 2011.09 64位AMI启动EC2实例 dd将EBS卷的内容转移ssh到本地图像文件中。 将映像文件安装为回送设备,然后再安装到本地安装点。 创建一个新的空磁盘映像文件,为启动加载程序分配一个具有偏移量的分区,然后创建一个ext4文件系统。 挂载新映像的分区,并复制EC2映像中的所有内容。 安装grub(使用Ubuntu的grub-legacy-ec2软件包,而不是grub2)。 使用将图像文件转换为vmdk qemu-img。 使用vmdk创建一个新的VirtualBox VM。 现在,VM启动,加载grub并找到了内核。但是在尝试挂载根设备时失败: dracut Warning: No root device "block:/dev/xvda1" found dracut Warning: Boot has failed. To debug this issue add "rdshell" to the kernel command line. dracut Warning: Signal caught! dracut Warning: Boot has failed. To …

3
Linux内核“ 11分钟模式”可以进行的最大硬件时钟更新是什么?
当某些与时间相关的程序(例如ntpd)在Linux系统上运行时,内核将切换到所谓的“十一分钟模式”(请参见hwclock手册页),从而它将每隔十一分钟自动从系统时钟中更新硬件时钟。 。 在SLES11上,我凭经验确定,如果将硬件时钟设置为比系统时钟晚10小时,则11分钟模式似乎无法使硬件时钟与系统时钟匹配。但是,如果我将硬件时钟设置为比系统时钟晚5分钟,则11分钟模式将是完美的选择。 因此,显然有一个11分钟模式可以处理的最大更新,我想知道这是什么。 更新: 真奇怪 更多的试验表明,当我身边有系统时钟落后20分钟HW时钟的11分钟的模式将设置硬件时钟是准确的系统时钟落后30分钟(!): # date Tue Dec 6 10:16:52 EST 2011 # hwclock --set --date "12/6/11 09:56" # # date Tue Dec 6 10:17:16 EST 2011 # hwclock --show Tue Dec 6 09:56:06 2011 -0.156551 seconds # # date Tue Dec 6 10:23:09 EST 2011 # …
18 linux  kernel  time 

1
如何找出网络接口丢弃数据包的原因?
Linux上是否有一种方法可以获取有关丢弃数据包的各种原因的统计信息? 在多台服务器的所有网络接口(openSUSE 12.3)上,ifconfig并netstat -i在接收时报告丢弃的数据包。当我执行a时tcpdump,丢弃的数据包的数量停止增加,这意味着接口队列未满并丢弃了数据。因此,一定有其他原因导致这种情况发生(例如,接收到多播pkts,而接口不属于此多播组)。 在哪里可以找到此类信息?(/ 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: …

4
高负载会导致服务器挂起并“阻塞超过120秒”错误吗?
当前正在运行一些VM和“裸机”服务器。Java的运行速度很高-有时超过400%。服务器随机挂起,并在控制台中显示以下错误:“ java-被阻止超过120秒”-kjournald,等等。 我无法获得dmesg输出,因为由于某种原因,此错误仅写入控制台,由于它是远程托管,因此我无权访问。因此,我无法复制完整的跟踪。 我更改了它所在的环境-甚至是物理服务器,并且这种情况仍在发生。 如果根据http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Technical_Notes/deployment.html,这是一个误报,我将Hang_task_timeout_secs更改为0 。 另外,没有安装irqbalance,也许会有所帮助吗? 这是Ubuntu 10.04 64位-最新的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 > /proc/sgs/kernel/hung_task_timeout_secs" disables this message. [58Z841.5?Z600] INFUI …
17 linux  kernel 

1
如何在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打开,RC6p关闭,RC6pp关闭 [7.900533] r8169 0000:06:00.0 eth0:链接 [7.900541] IPv6:ADDRCONF(NETDEV_CHANGE):eth0:链接已准备就绪 + [236832.221937] perf中断花费的时间太长(2504> 2500),将kernel.perf_event_max_sample_rate降低为50000 经过一番搜索,我现在知道这与Linux内核中称为“ perf”的性能分析子系统有关。我认为我们不需要这个,所以我想完全禁用它。 再次搜索,发现sysctl perf_cpu_time_max_percent可以提供帮助。这里有人建议通过将其设置为0来禁用它。在这里阅读更多内容: perf_cpu_time_max_percent: 提示内核应将多少CPU时间用于处理性能采样事件。如果性能子系统被告知其采样数已超过此限制,它将降低其采样频率以尝试减少其CPU使用率。 在NMI中会进行一些性能采样。如果这些样本出乎意料地花费太长时间执行,则NMI可能会紧挨在一起堆叠在一起,以致其他任何东西都不允许执行。 0:禁用该机制。无论花费多少CPU时间,都不要监视或校正perf的采样率。 1-100:尝试将perf的采样率限制为该CPU百分比。注意:内核会计算每个样本事件的“预期”长度。这里的100表示​​预期长度的100%。即使将其设置为100,如果超过此长度,您仍可能会看到样品节流。如果您确实不关心消耗了多少CPU,则设置为0。 在我看来,这听起来像0,意味着不再检查分析采样率,但是freq子系统保持运行状态(?)。 谁能阐明如何使用freq完全禁用内核性能分析? 编辑:有人建议我尝试在没有性能的情况下构建内核,但是我什至认为这是不可能的。该选项似乎不可切换: EDIT2:经过更多阅读后,我决定可以将其设置kernel.perf_event_max_sample_rate为零。即每秒没有样本。但是,您也不能做到这一点(source): 提交02f98e3e36da106338b7c732fed516420fb20e2a 作者:纳特·彼得森(Knut Petersen) 日期:2013年9月25日星期三14:29:37 +0200 perf:将1强制为perf_event_max_sample_rate的下限 编辑3:FWIW perf_cpu_time_max_percent设置为25,这意味着内核花费了其硬件采样时间的25%以上。这对于基准测试机是不可接受的。 我现在确定将其设置perf_cpu_time_max_percent为零只会使情况恶化,因为内核将继续使用其25%以上的时间读取硬件寄存器。该错误会触发以调整采样率,从而尝试确保内核满足其配额(使用小于25%的时间作为perf)。25%仍然太高恕我直言。 如果我真的不能禁用性能,则最好的折衷办法可能是设置perf_event_max_sample_rate为1。 EDIT4:一位朋友建议我可能对的含义有误解perf_cpu_time_max_percent,因此上述说法可能不正确。值25表示内核使用了为服务性能中断保留的任意长度的25%以上。 …

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/

6
ksplice生产准备好了吗?
我想听听serverfault社区在Ksplice生产中的经验。 来自维基百科的快速讨论: Ksplice是Linux内核的免费和开源扩展,它允许系统管理员将安全补丁应用到正在运行的内核,而无需重新启动操作系统。 和 Ksplice可以在不重新启动内核的情况下应用仅需要修改内核代码的任何源代码补丁。与其他热更新系统不同,Ksplice仅输入统一的diff和原始内核源代码作为输入,并且可以正确更新正在运行的内核,而无需其他人工协助。另外,利用Ksplice不需要在启动系统之前进行任何准备(例如,运行中的内核不需要经过专门编译)。为了生成更新,Ksplice必须确定内核中的哪些代码已被源代码补丁更改。 有几个问题: 稳定性如何?您的内核“无重启实时修补”遇到任何奇怪的问题吗?内核恐慌还是恐怖故事? 我已经在一些测试系统上运行了它,到目前为止,它已经按照广告宣传的方式工作了,但是我对其他“系统管理员”在“全力以赴”并将其部署到生产服务器上之前所经历的Ksplice感兴趣。 那么,有人在生产中使用Kspice吗? 更新:嗯,几个小时后没有看到关于此问题的任何实际活动(除了某些支持和偏爱)。也许要激发一些活动,我还会问一些其他问题,看看我们是否可以继续进行讨论... “如果您知道Ksplice,有没有理由不使用它?” “您觉得它的边缘仍然过于出血,未经验证或未经测试吗?” “ Ksplice是否不能很好地适应您当前的补丁管理系统?” “您讨厌系统具有长(且安全)的正常运行时间吗?” ;-)

1
正常运行18天后,systemd使用4GB RAM
我有一台运行CentOS 7的Web服务器,经过几周的正常运行时间后,systemd进程在该服务器上使用了近4 GB的RAM。RAM使用量稳定增长,每天约200MB。该进程以及诸如systemd-logind和dbus-daemon之类的相关进程在很多时候也使用大量的CPU。我的其他使用“ init”代替systemd的CentOS 6服务器没有这种资源使用情况。 在下面的顶部示例中,在不运行其他进程的正常Web服务期间,systemd,systemd-logind,systemd-journal和dbus-daemon总共使用了10.7%的四核CPU,而systemd消耗了19%的四核CPU。系统的16GB RAM。这不是正常现象,经过搜索后,我再也没有发现其他人遇到这个问题。是什么导致这种资源浪费?任何建议,将不胜感激。 空闲期间从顶部输出(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 …
14 linux  kernel  systemd 

4
如何解决“错误:软锁定-CPU#0卡住了17163091968s”的问题?
更新:我更新了邮件的标题,因为在此精确时间范围内,我最近看到了更多这些问题17163091968s。这应该可以帮助调查症状的人们找到此页面。请参阅下面我的(自我)接受的答案。 我在VMware vSphere数据中心中有一堆64位的Ubuntu 10.04 LTS VM。VMware工具已安装(vSphere Client说“确定”)。 我已经看到几次VM挂起,并在syslog中出现以下错误。从vSphere检查情况时,控制台为黑色,“重新启动来宾”命令没有执行任何操作,因此我必须关闭虚拟机电源,然后再打开。 Dec 1 11:44:15 s0 kernel: [18446744060.007150] BUG: soft lockup - CPU#0 stuck for 17163091988s! [jed:26674] Dec 1 11:44:15 s0 kernel: [18446744060.026854] Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus hfs minix ntfs vfat msdos fat jfs xfs exportfs reiserfs xt_tcpudp …

1
任务集无法在Isolcpus中的一系列内核上工作
首先,我在AMD64芯片组上将Debian Wheezy与内核3.2一起使用。我的机器有两个Xeon E5-2690内核。我设置了引导参数,以便一个CPU上的所有内核都专用于一个进程。为此,我在grub中设置了isolcpus = 8,9,10,11,12,13,14,15。 到目前为止,一切都很好。现在让我们说我想对给定的命令使用隔离的CPU,为简单起见,我将使用一个简单的无限循环: $ taskset -c 8-15 bash -c'while true; 回声你好> / dev / null; 完成了& 到目前为止,到目前为止,顶部显示核心8的旋转利用率接近100%。现在,假设我再次启动该命令: $ taskset -c 8-15 bash -c'while true; 回声你好> / dev / null; 完成了& 现在top显示内核9-15保持空闲,并且两个进程共享内核8。如果相反,我这样做: $ taskset -c 8 bash -c'while true; 回声你好> / dev / null; 完成了& $ taskset -c …

3
奇怪:为什么在上次ping回复后linux用ARP请求响应ping?
我(和一位同事)刚刚注意到并进行了测试,当对Linux计算机执行ping操作时,在最后一次ping之后,它将向启动ICMP ping的计算机发起单播 ARP请求。ping Windows机器时,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) …
12 linux  kernel  ping  arp  icmp 

5
GRUB“核心映像中可能缺少某些模块”警告
一个硬盘从RAID崩溃,我添加了一个新硬盘。 现在,我想将GRUB安装到新的HDD:中grub-install /dev/sdb。我收到以下警告: Installing for i386-pc platform. grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image.. grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image.. Installation finished. No error reported. 在update-grub2我得到: Generating grub configuration file ... /usr/sbin/grub-probe: warning: …
12 ubuntu  kernel  grub  grub2 


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.