При тестировании моей системы мне нужен скрипт, который будет использовать как можно больше оперативной памяти и свопа

Я тестирую свою систему с помощью zram, мне нужен скрипт, который будет использовать как можно больше памяти. Этот скрипт должен заполнить мой баран случайными вещами, а не только нулями.

5
задан 28 May 2013 в 15:41

5 ответов

memtester - это программа пространства пользователя, предназначенная для выделения памяти (любое количество, которое вы укажете) и проверки ее со случайными образцами. Это позволит избежать использования свопа. Но если вы сначала удалите всю память с помощью memtester (проверьте с помощью free -m), а затем запустите все, что использует много памяти (gimp, firefox, ...), это должно привести к обмену.

Другой альтернативой может быть что-то вроде openssl rand -base64 $((1024*1024*1024)) | less и при меньшем использовании > для перехода к последней строке; это приведет к загрузке в память 1 ГБ случайных данных в кодировке base64 (но это медленно).

Если вы ищете что-то более эффективное, подойдет небольшой скрипт на любом языке сценариев (например, Python).

#!/usr/bin/python2
import numpy
result = [numpy.random.bytes(1024*1024) for x in xrange(1024)]
print len(result)

Это выделит 1 Гб памяти со случайными данными и напечатает количество МБ, выделенных перед завершением. Если вы хотите больше 1024M, соответственно измените значение xrange.

0
ответ дан 28 May 2013 в 15:41

Ожидайте, что zswap будет работать крайне плохо - значительно ухудшит производительность, - если вы заполняете память случайными байтами, особенно если вы случайным образом касаетесь большого количества памяти в спешке.

zram сжимает содержимое страниц памяти, и сжатие работает только в том случае, если данные не случайны. Реальные данные (особенно данные в памяти) обычно достаточно сжимаемы.

zram также помогает, только если у вас есть «местность ссылок», как у большинства программ - они, как правило, многократно касаются одних и тех же страниц, прежде чем касаться некоторого другого подмножества страниц. (Вот почему нормальная виртуальная память тоже работает. Сжатое кэширование просто добавляет новый уровень памяти между обычными несжатыми страницами и дисковым хранилищем.)

Если вы это знаете и намеренно пытаетесь протестировать zswap при худшем условия, возможно, чтобы найти ошибки, пойти на это.

Но если нет, то вам, вероятно, следует прочитать статью Пола Р. Уилсона и его коллег «Случай сжатого кэширования в системах с виртуальной памятью», в которой объясняется, когда помогает сжатие ОЗУ, когда оно вредно, и как адаптивный алгоритм может использоваться в это помогает, а не когда это не так. (Документ доступен в формате html на каком-то сайте USENIX и в формате pdf где-то еще. Google it.)

К сожалению, насколько я знаю, zram не выполняет тот тип общей автоматической адаптации, который они описывают, поэтому Вы должны установить размер сжатого кэша на приемлемое обычное значение для вашей рабочей нагрузки.

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

0
ответ дан 28 May 2013 в 15:41

Я бы предложил использовать программу стресс , устанавливаемую из репозиториев с sudo apt-get install stress.

Для проверки вашей оперативной памяти используйте stress -m x, где x - количество рабочих, которые заполнят оперативную память. Выберите больше работников, чтобы использовать больше оперативной памяти.

0
ответ дан 28 May 2013 в 15:41

Как предсказывает пророчество201 , стресс является отличным инструментом для использования памяти вашей системы. Добавление большего количества рабочих израсходует больше оперативной памяти, но при этом будет израсходовано больше ЦП, что довольно неэффективно, если все, что вам нужно, это протестировать ОЗУ. Не говоря уже о том, что для сжатия Zram понадобится процессор.

Вместо этого вы должны увеличить объем ОЗУ, который используется с флагом --vm-bytes. Например, для использования 4 ГБ ОЗУ с одним рабочим:

stress -m 1 --vm-bytes 4G

Также может оказаться полезным флаг --vm-keep, поскольку он будет удерживать выделение памяти вместо постоянного перераспределения, поэтому использование памяти будет будьте постоянными, а не колеблющимися:

stress -m 1 --vm-bytes 4G --vm-keep

Наконец, посмотрите здесь, чтобы убедиться, что zram - это то, что вы действительно хотите; поскольку у вас есть своп, zswap может быть лучшим решением: zram vs zswap vs zcache Руководство по конечной цели: когда использовать какой из них

0
ответ дан 28 May 2013 в 15:41

Просто запустите:

echo {1..1000000000}

Объяснение:

Оболочка, перед тем как передать команду ядру, расширяет все регулярные выражения и сокращения. Расширенная команда временно сохраняется в оперативной памяти. Приведенная выше команда расширяется до очень большой команды и, следовательно, она полностью заполняет ОЗУ (протестировано на 8 ГБ).

ВНИМАНИЕ: Это не контролируемый способ заполнения ОЗУ. Вы можете застрять после запуска этой команды. Я советую вам держать ваш system monitor открытым (для наблюдения за использованием оперативной памяти) и попробуйте с меньшими числами.

0
ответ дан 28 May 2013 в 15:41

Другие вопросы по тегам:

Похожие вопросы: