下载
中文
注册
OpenEuler 20.03 Arm架构程序申请相同数量的进程时,内存占用相比于x86大很多

OpenEuler 20.03 Arm架构程序申请相同数量的进程时,内存占用相比于x86大很多

2024/02/22

333

暂无评分
我要评分

问题信息

问题来源产品大类产品子类关键字
官方安装部署驱动固件openEuler、进程、内存

问题现象描述

检索业务从x86服务器上向arm服务器上迁移时,相同的容器环境下(内存为64M),发现程序申请相同数量的进程,在openEuler 20.03 Arm架构服务器上出现内存空间不足的问题。如图1所示。

图1 详细信息

“/dev/shm ” 目录dev == device,shm == shared memory,该目录是 linux 操作系统利用内存虚拟出来的目录,此目录中的文件都保存在内存中。

原因分析

相同条件下, x86架构下linux系统pagesize默认为4kb ,而openEuler 20.03 Arm版本默认pagesize为64kb,会造成内存浪费现象,修改为4kb则可以解决问题。

因此,pagesize大可以提高缓存利用率,提高磁盘I/O;而pagesize小可以减少内存浪费。对用户来说,有些业务追求速度,有些业务预先分配内存,追求硬件资源极致利用。

排查方法

  1. 打印信息。

    uname -a

  2. 查询内存大小。

    getconf PAGESIZE

    4kb 对应 4096,64kb 对应65536。

解决措施

  • 将openEuler 升级为22.03版本,此版本Pagesize默认为4kb。
  • 修改内核参数 Pagesize为4kb(需要重新编译内核)。
    1. 安装依赖

      yum install tar openssl-devel ncurses-devel bison m4 flex bc

    2. 手动下载 kernel包,参见https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS-SP3/source/Packages/kernel-4.19.90-2112.8.0.0131.oe1.src.rpm
    3. 下载完成后执行以下命令安装软件包。

      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

    4. 配置参数。

    5. 编译重启。

      make -j8

      make modules_install -j8

      make install -j8

      grub2-set-default 0 && reboot

      8指cpu核心数,需要确认相应修改。

      验证结果如下

本页内容