最近的实验内容是修改内核源屏蔽Linux页面替换功能。 然后,使用brk编写验证程序继续向内存写入数据,同时确保此验证程序不会被OOM杀死(稍后将详细介绍实验的详细过程),并观察内存消耗较多时是否使用交换空间
用这种方法确认了屏蔽成功了。 但是,同时也发生了几个问题。 当写入内存超过一定数量时,系统会死机。 要确认系统的极限情况,首先需要弄清楚接近临界区域时发生了什么。 这需要内核转储技术。 使用kdump与crash合作显示碰撞信息。
1 kdump概述
kdump是一种基于kexec的内核故障转储技术。 kdump需要两个内核。 分别是生产内核和捕获内核。 生产内核是捕获内核的服务对象,为启动捕获内核保留了一部分内存。 如果系统崩溃,kdump将使用kexec启动捕获内核,并使用相应的ramdisk一起构建微环境,以收集和导出生产内核下的内存。
kdump设置
实验环境: CentOS7
实验内核: linux-3.10.0-514.el7.x86_64
2.1安装密钥工具
使用kdump服务需要kexec-tools工具包。
sudo yum update
sudo yum install kexec-tools
安装完成后,可以在kexec -version中查看kexec的版本。
2.2kdumpKernel配置
您需要设置kdump kernel的内存区域。 如果kdump请求正常使用系统,则kdump kernel占用的内存不可用。
修改grub文件
vim /etc/default/grub
必须将grub _ cmdline _ Linux=' crash kernel=auto . '的自动修改为128米。 一般为128M或256M。
更新grub配置
每次修改grub文件时,都必须更改grub配置。
sudo grub2- mkconfig-o/boot/grub2/grub.CFG
3 .重新启动系统
远程
2.3更改kdump的默认设置
vim /etc/kdump.conf
其中,应注意的三行内容是
path /ggdyc/crash #指定将coredump文件放在/ggdyc/crash文件夹中
在core _ collectormakedumpfile-c-l-message-level1- d31 #中添加-c表示压缩,而不在原始文件中
default reboot #生成coredump后,重新启动系统
2.4启动kdump服务
启动systemctlstartkdump.service//kdump
systemctl enable kdump.service //启动设置
2.5测试kdump是否打开
检查kdump启动是否成功
服务kdump status
如下所示,表示接通成功
kdump启动成功
手动触发crash
#echo 1 /proc/sys/kernel/sysrq
#echo c /proc/sysrq-trigger
如果配置成功,系统将自动重新启动并重新启动系统。 如图所示,您可以看到在/ggdyc/crash文件夹下生成了相应的文件。 这是一个以生成coredump的日期为文件名的文件。
酷睿双核处理器