OpenEuler 20.03 Arm架构程序申请相同数量的进程时,内存占用相比于x86大很多
2024/02/22
333
问题信息
问题来源 | 产品大类 | 产品子类 | 关键字 |
---|---|---|---|
官方 | 安装部署 | 驱动固件 | openEuler、进程、内存 |
问题现象描述
检索业务从x86服务器上向arm服务器上迁移时,相同的容器环境下(内存为64M),发现程序申请相同数量的进程,在openEuler 20.03 Arm架构服务器上出现内存空间不足的问题。如图1所示。
“/dev/shm ” 目录dev == device,shm == shared memory,该目录是 linux 操作系统利用内存虚拟出来的目录,此目录中的文件都保存在内存中。
原因分析
相同条件下, x86架构下linux系统pagesize默认为4kb ,而openEuler 20.03 Arm版本默认pagesize为64kb,会造成内存浪费现象,修改为4kb则可以解决问题。
因此,pagesize大可以提高缓存利用率,提高磁盘I/O;而pagesize小可以减少内存浪费。对用户来说,有些业务追求速度,有些业务预先分配内存,追求硬件资源极致利用。
排查方法
解决措施
- 将openEuler 升级为22.03版本,此版本Pagesize默认为4kb。
- 修改内核参数 Pagesize为4kb(需要重新编译内核)。
- 安装依赖
yum install tar openssl-devel ncurses-devel bison m4 flex bc
- 手动下载 kernel包,参见https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS-SP3/source/Packages/kernel-4.19.90-2112.8.0.0131.oe1.src.rpm。
- 下载完成后执行以下命令安装软件包。
rpm -ivh kernel-4.19.90-2112.8.0.0131.oe1.src.rpm
cd /root/rpmbuild/SOURCES
tar xzf kernel.tar.gz
cd kernel
make menuconfig
- 配置参数。
- 编译重启。
make modules_install -j8
make install -j8
grub2-set-default 0 && reboot
8指cpu核心数,需要确认相应修改。
验证结果如下
- 安装依赖
本页内容