Сервера на AMD Instinct MI300X столкнулись с проблемой из-за огромного объёма видеопамяти

Казалось бы, высокопроизводительные ускорители AMD Instinct MI300X должны дарить только положительные эмоции своим новым владельцам, предлагая приличную производительность, энергоэффективность и огромное количество видеопамяти, но на деле они столкнулись с неприятной проблемой.

Оказывается, что большой пул памяти не даёт ядру Linux нормально функционировать, по крайней мере, в тот момент, когда система хочет уйти в гибернацию. Согласно алгоритму действий, сначала система должна выгрузить данные из видеопамяти в оперативную память через таблицу преобразования графики или общую память, оттуда ядро системы создаёт образ для сна, но с тем нюансом, что образ включает в себя удалённую видеопамять во второй области памяти, и только потом записывает всё на накопитель.

Если говорить более понятно, то, если в сервере присутствует 1,5 Тбайта видеопамяти, то при создании образа для сна она займёт 3 Тбайта из-за дублирования, в то время как в серверах не всегда есть более двух терабайт оперативной памяти. Получается, во время ухода системы в гибернацию система попросту выдаёт ошибку, так как ей недостаточно системной памяти для совершения этого действия.

Более того, если сон всё же включился, то выход из него требует большого количества времени, так как стадия «размораживания» занимает 50 минут. На данный момент эти проблемы были решены при помощи трёх патчей, так что уход в сон происходит нормально, как и выход из него, занимающий значительно меньше времени.

«Современные ускорители центров обработки данных обычно оснащены очень большим количеством видеопамяти. На сервере с такими решениями, включающими 192 Гбайта видеопамяти на один или 1,5 Тбайта на восемь ускорителей, 2 Тбайт системной памяти недостаточно для режима гибернации, в связи с чем он завершится сбоем из-за нехватки свободной памяти.

Основная причина заключается в том, что во время гибернации вся видеопамять перемещается в GTT или shmem. В обоих случаях она находится в системной памяти, и ядро попытается скопировать страницы в образ гибернации. В худшем случае это приводит к появлению второй копии видеопамяти в системной памяти, поэтому 2 Тбайт RAM недостаточно для входа в спящий режим».