我和同学们一起集结资源,搭建了一个小型的 Ubuntu 研究服务器。
该服务器有 128GB 的 RAM,我将交换空间放在连接到 PCI 总线的专用 SSD 上。(/dev/nvme0n1)三星 960 EVO。系统是二手的,Dell PowerEdge T430
有两个处理器。**
我可以使用swapon
ssd,但 Ubuntu 16.04 没有使用它。Swappiness 为 85,vfs_cache_pressure 设置为 50。
# swapon --show
NAME TYPE SIZE USED PRIO
/dev/nvme0n1 partition 477G 0B -1
$cat /proc/sys/vm/swappiness && cat /proc/sys/vm/vfs_cache_pressure
85
50
$ free -h
total used free shared buff/cache available
Mem: 125G 94G 8.8G 27M 22G 29G
Swap: 476G 0B 476G
# fdisk -l
Disk /dev/nvme0n1: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
$ ls /dev/nvme*
/dev/nvme0 /dev/nvme0n1
在专用磁盘上进行交换是否会导致这种情况?
尝试修复它。
- 我已尝试
swapon
并swapoff
修复它 - 我还尝试过在 SSD 上创建交换分区 (p1),而不是整个驱动器本身
- 我曾尝试在磁盘
mkswap /dev/nvme0n1
之前的驱动器上swapon
** 尽管文档指出两个 CPU 必须具有相同的 RAM 配置,但所有 RAM(4x32gb)都位于第二个处理器(B1-B4)上。这是唯一有效的 RAM 座位。
答案1
您的问题很可能源于对如何在 Linux 中读取 RAM 使用情况的误解。您仍有 29GB 可用,您的“free -h”显示如此。您的机器没有理由使用交换。
请记住,“缓存/缓冲区”不被视为“已使用”。机器只是使用 RAM 来加速机器,但该 RAM 被视为可用。
也许你需要了解一下 RAMlinuxatemyram.com在 Linux 中的使用。
Swappiness 只是一个建议。如果没有理由将程序放入交换区,内核就不会这么做。