Я настраиваю производительность работы с Python (которая использует Pytorch и Nvidia Cuda).Мой процесс Python выполняется в общем кластере, где необходимо явно указать максимальный объем ОЗУ.Так как чем меньше, тем лучше, мы склонны устанавливать меньшее ОЗУ, которое не вызывает нехватку памяти.
В частности, я заметил, что ОЗУ может сильно повлиять на производительность.Например, если я установлю RAM = 6 ГБ, моя работа займет 27 часов.Если я установлю максимальное ОЗУ = 10 ГБ (сохраняя все остальные переменные одинаковыми), то же самое задание займет около ~ 16 часов.Большая часть работы выполняется на GPU с использованием GPU RAM, поэтому CPU и CPU RAM предназначены только для ведения и перемещения тензоров.
Я подозреваю, что сборщик мусора запускается слишком часто, когда я устанавливаю меньше оперативной памяти.Я наблюдал такого рода поведение, когда имел дело с JavaVM, , и у меня были инструменты для проверки того, сколько времени мой JVM-процесс проводит в сборщике мусора .
Однако с Python яЯ не в курсе.
Есть ли какие-либо способы проверки управления памятью, в частности, времени сбора мусора (доли времени выполнения)?