面向异构内存的可靠管理关键技术研究

查看服务器拓扑架构

hwloc
lstopo

León E A, Goglin B, Proaño A R. M&MMs: navigating complex memory spaces with hwloc[C]//Proceedings of the International Symposium on Memory Systems. 2019: 149-155.

表现异构内存性能信息

启用ACPI中定义的HMAT

https://lwn.net/Articles/727348/

NUMA Balancing

ACPI

# 依赖安装
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu gcc-riscv64-unknown-elf binutils-riscv64-unknown-elf

参考链接: https://pdos.csail.mit.edu/6.S081/2021/tools.html

git clone git://g.csail.mit.edu/xv6-labs-2020
cd xv6-labs-2020
git checkout util
make qemu

启用修改后内核,并拆分NUMA节点

修改代码,编译内核

  1. 解压kernel-openEuler-22.03-LTS代码
  2. 修改代码
  3. cp -v /boot/config-$(uname -r) .config config-直接按TAB自动补全
  4. make ARCH=arm64 -j60
  5. make modules_install -j60
  6. make install ARCH=arm64
  7. reboot

编译内核后,需要重新拆分NUMA node

iasl -sa SRAT.dsl
iasl -sa HMAT.dsl
iasl -sa SLIT.dsl
cp SRAT.aml HMAT.aml SLIT.aml /home/Lihoo/kernel/firmware/acpi/
cd ..
# 将修改的SRAT之类的保存到virtual_node_initramfs_2209
find kernel | cpio -c -o > /boot/virtual_node_initramfs_2209
# 将原生的initramfs附加上
cat /boot/initramfs-$(uname -r).img >> /boot/virtual_node_initramfs_2209

vim /boot/efi/EFI/openEuler/grub.cfg
# 把initrd那行改为: 
#	initrd  /virtual_node_initramfs_2209

reboot

简化步骤,为上面两步之和

make ARCH=arm64 -j60
make modules_install -j60
make install ARCH=arm64

find kernel | cpio -c -o > /boot/virtual_node_initramfs_2209
cat /boot/initramfs-$(uname -r).img >> /boot/virtual_node_initramfs_2209
vim /boot/efi/EFI/openEuler/grub.cfg
#	指定相应内核版本的initrd为virtual_node_initramfs_2209
#   initrd为linux内核加载初始的ramdisk

cat /boot/efi/EFI/openEuler/grub.cfg |grep "menuentry "
grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg

reboot

新增CONFIG项后重新编译内核

make mrproper
cp -v /boot/config-$(uname -r) .config
make menuconfig
make -j4
make modules_install -j4
make install
reboot

错误注入(UCE)

获取/proc/<pid>/maps下指定区域的一段虚拟地址作为注入UCE的虚拟地址段,转化为物理地址
部分虚拟地址段不能注入UCE,如:共享库和text段

启用日志 & 调试

cat /dev/null > /var/log/messages
echo 1 > /proc/sys/kernel/numa_balancing_reliability_debug
echo 1 > /proc/sys/kernel/numa_balancing_reliability_page_alloc
cat /var/log/messages

# core dump配置
ulimit -a
# core dump目录
cd /var/lib/systemd/coredump/
# core dump文件解压
lz4 -d core.XSBench.0.89c225516dca4878b8e88278b63d3b30.596845.1682218282000000.lz4

dmesg | grep <pid>
dmesg -w

系统信息查看

# 查看当前config
zcat /proc/config.gz > /home/Lihoo/running.config

# 查看cache回写策略:
dmidecode -t cache

# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

KVM虚拟机磁盘扩容

cd /home/lihaoDong/image2
qemu-img resize openEuler.qcow2 +10G
fdisk -l 	//看到有多余的空间
参考链接 操作2 新增/dev/vda#
fdisk /dev/vda 
	t ->4 ->L ->30 ->w  					/dev/vda6走到这一步,/boot是part?不是lvm?
fdisk -l //查看新增的/dev/vda# 类型是否为Linux LVM
mkfs.ext4 /dev/vda4
pvcreate /dev/vda4
pvdisplay
vgextend openeuler /dev/vda4
pvdisplay
lvextend -L +13G /dev/mapper/openeuler-root
lvs
resize2fs /dev/mapper/openeuler-root
df -h

https://blog.csdn.net/weixin_40436144/article/details/86235432

透明大页(THP)

#查看大页内存使用情况
grep Huge /proc/meminfo
#查看各个numa节点的大页内存情况
cat /sys/devices/system/node/node0/meminfo | fgrep Huge
#查看大页内存挂载情况
cat /proc/mounts

#查看透明大页启动情况
cat /sys/kernel/mm/transparent_hugepage/enabled
#启动透明大页
echo always > /sys/kernel/mm/transparent_hugepage/enabled
#禁用透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo "vm.nr_hugepages=200" >> /etc/sysctl.conf

https://www.cnblogs.com/halberd-lee/p/12802918.html

KVM虚拟机

# 虚拟机配置
vim openEulerHMA.xml
virsh define openEulerHMA.xml
virsh start openEulerHMA

virsh start openEuler
virt-manager

virsh shutdown openEuler
virsh restart openEuler

其他参考链接:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-working_with_the_grub_2_boot_loader#sec-Making_Persistent_Changes_to_a_GRUB_2_Menu_Using_the_grubby_Tool

https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/05_ACPI_Software_Programming_Model/ACPI_Software_Programming_Model.html?highlight=hmat

results matching ""

    No results matching ""