Команда free показывает количество памяти доступное пользователю для запуска программ. Это значение обычно меньше, чем фактически у вас на сервере.
# free -htotal used free shared buff/cache availableMem: 2.9Gi 633Mi 687Mi 3.5Mi 1.8Gi 2.3Gi
Так происходит, потому что ядро Linux резервирует нужный процент памяти для работы самого себя, процент зависит от размера ядра и его модулей.
Правильно будет смотреть количество памяти через команду dmidecode:
# dmidecode -t memory# dmidecode 3.4Getting SMBIOS data from sysfs.SMBIOS 2.8 present.
Handle 0x1000, DMI type 16, 23 bytesPhysical Memory ArrayMaximum Capacity: 3 GB
Handle 0x1100, DMI type 17, 40 bytesMemory DeviceSize: 3 GB

