Нагрузить оперативную память linux

Linux: Как нагрузить системную память?

Я работаю над небольшой функцией, которая дает моим пользователям представление о том, насколько загружен процессор.

Я использую cat /proc/loadavg , который возвращает три хорошо известных числа.

Моя проблема в том, что процессор ничего не делает прямо сейчас, пока я разрабатываю.

Есть ли хороший способ создать некоторую нагрузку на ЦП, я думал что-то вроде makecpudosomething 30 для нагрузки 0,3 или подобной. Существует ли подобное приложение?

Кроме того, есть ли способ контролируемым образом съедать оперативную память?

— Он сказал «съедать оперативную память в управляемом режиме». Java просто проглотит все, что захочет. -P

14 ответов

Я не очень хорошо понял, хотите ли вы сгенерировать произвольную загрузку ЦП или использование ЦП. Да, это действительно разные вещи. Я постараюсь решить обе проблемы.

Прежде всего: load — это среднее количество процессов в запущенных , работающих или ожидающих ЦП очередях планировщика за заданный промежуток времени «то, что требует ваш ЦП » так сказать.

Итак, если вы хотите сгенерировать произвольную нагрузку (скажем, 0,3), вам нужно запустить процесс в течение 30% времени, а затем удалить его из очереди выполнения в течение 70% времени, переместив его в спящая очередь или ее уничтожение, например.

Для этого вы можете попробовать этот скрипт:

export LOAD=0.3 while true do yes > /dev/null & sleep $LOAD killall yes sleep `echo "1 - $LOAD" | bc` done 

Обратите внимание, что вам нужно подождать некоторое время (1, 10 и 15 минут), прежде чем появятся соответствующие числа, и на это будут влиять другие процессы в вашей системе. Чем больше загружена ваша система, тем больше будут эти числа. Последнее число (интервал 15 минут), как правило, является наиболее точным.

Использование ЦП — это время, в течение которого ЦП использовался для обработки инструкций компьютерной программы.

Итак, если вы хотите сгенерировать произвольную загрузку ЦП (скажем, 30%), вам нужно запустить процесс, который 30% времени привязан к ЦП и 70% его неактивен.

Я написал пример, чтобы показать вам, что:

#include #include #include #include #include #include #include #define CPUUSAGE 0.3 /* set it to a 0 < float < 1 */ #define PROCESSES 1 /* number of child worker processes */ #define CYCLETIME 50000 /* total cycle interval in microseconds */ #define WORKTIME (CYCLETIME * CPUUSAGE) #define SLEEPTIME (CYCLETIME - WORKTIME) /* returns t1-t2 in microseconds */ static inline long timediff(const struct timeval *t1, const struct timeval *t2) < return (t1->tv_sec - t2->tv_sec) * 1000000 + (t1->tv_usec - t2->tv_usec); > static inline void gettime (struct timeval *t) < if (gettimeofday(t, NULL) < 0) < err(1, "failed to acquire time"); >> int hogcpu (void) < struct timeval tWorkStart, tWorkCur, tSleepStart, tSleepStop; long usSleep, usWork, usWorkDelay = 0, usSleepDelay = 0; do < usWork = WORKTIME - usWorkDelay; gettime (&tWorkStart); do < sqrt (rand ()); gettime (&tWorkCur); >while ((usWorkDelay = (timediff (&tWorkCur, &tWorkStart) - usWork)) < 0); if (usSleepDelay while (1); return 0; > int main (int argc, char const *argv[]) < pid_t pid; int i; for (i = 0; i < PROCESSES; i++) < switch (pid = fork ()) < case 0: _exit (hogcpu ()); case -1: err (1, "fork failed"); break; default: warnx ("worker [%d] forked", pid); >> wait(NULL); return 0; > 

Это будет использовать на 9%-16% меньше процессора, чем желаемое значение на многих, где, к сожалению, usleep может быть отключен на 2 мс или дольше (например: 25% = 3/12, а не 30%). максимально возможный процент загрузки процессора может составлять 91% против 100%. можно ближе с поправкой на переполнение (типа cpulimit), реалтайм не нужен. тем не менее, ОП может просто сравнить ps со своим графическим интерфейсом. Этот код — отличный инструмент для определения использования процессора, очень удобный!

Читайте также:  Linux группа www data

Источник

Как провести стресс-тестирование вашей системы Linux

img

Повышение нагрузки на серверы Linux может быть хорошей идеей, если вы хотите увидеть, насколько хорошо они работают, когда они загружены. В этой статье мы рассмотрим некоторые инструменты, которые помогут вам нагрузить сервер и оценить результаты.

Для чего вам необходимо подвергать свою систему Linux нагрузке? Потому что иногда вам может потребоваться узнать, как система будет вести себя, когда она находится под большим давлением из-за большого количества запущенных процессов, интенсивного сетевого трафика, чрезмерного использования памяти и т. д. Этот вид тестирования позволяет убедиться, что система готова к использованию.

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

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

Создаем циклы своими руками

Данный первый метод предполагает запуск некоторых циклов в командной строке и наблюдение за тем, как они влияют на систему. Этот метод нагружает ЦП, значительно увеличивая нагрузку. Результаты можно легко увидеть с помощью команды uptime или аналогичных команд.

В приведенной ниже примере мы начинаем четыре бесконечных цикла. Вы можете увеличить количество циклов, добавляя цифры или используя выражение bash , например вместо «1 2 3 4».

for i in 1 2 3 4; do while : ; do : ; done & done

В примере выше, команда, запускает четыре бесконечных цикла в фоновом режиме.

$ for i in 1 2 3 4; do while : ; do : ; done & done [1] 205012 [2] 205013 [3] 205014 [4] 205015

В этом случае были запущены задания 1-4. Отображаются как номера заданий, так и идентификаторы процессов.

Чтобы увидеть влияние на средние значения нагрузки, используйте команду, подобную показанной ниже. В этом случае команда uptime запускается каждые 30 секунд:

$ while true; do uptime; sleep 30; done

Если вы собираетесь периодически запускать подобные тесты, вы можете поместить команду цикла в скрипт:

#!/bin/bash while true do uptime sleep 30 done

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

Читайте также:  Linux on windows mobile devices

Рис. 1 Просмотр нагрузки на ЦП

Поскольку показанные нагрузки представляют собой средние значения за 1, 5 и 15 минут, потребуется некоторое время, чтобы значения вернулись к нормальным для системы значениям.

Чтобы остановить циклы, выполните команду kill , подобную приведенной ниже — при условии, что номера заданий равны 1-4, как было показано ранее в этой статье. Если вы не уверены, используйте команду jobs , чтобы проверить ID.

Специализированные инструменты для добавления нагрузки

Другой способ создать системный стресс — это использовать инструмент, специально созданный для того, чтобы нагружать систему за вас. Один из них называется stress и может воздействовать на систему разными способами. Стресс-инструмент — это генератор рабочей нагрузки, который обеспечивает стресс-тесты ЦП, памяти и I/O.

С параметром —cpu команда stress использует функцию извлечения квадратного корня, чтобы заставить ЦП усердно работать. Чем больше указано количество ЦП, тем быстрее будет нарастать нагрузка.

Второй сценарий watch-it (watch-it-2) может использоваться для оценки влияния на использование системной памяти. Обратите внимание, что он использует команду free , чтобы увидеть эффект стресса.

$ cat watch-it-2 #!/bin/bash while true do free sleep 30 done

Начало и наблюдение за стрессом:

Рис. 2 Стресс нагрузка ОЗУ

Чем больше ЦП указано в командной строке, тем быстрее будет нарастать нагрузка.

Рис. 3 Увеличение нагрузки при увеличении количества процессоров

Команда stress также может вызвать нагрузку на систему, добавив I/O и загрузку памяти с помощью параметров —io (input/output) и —vm (memory).

В следующем примере выполняется команда для добавления нагрузки на память, а затем запускается сценарий watch-it-2 :

Рис. 4 Запуск сценария watch-it-2

Другой вариант для стресса — использовать параметр —io , чтобы добавить в систему действия по вводу/выводу. В этом случае вы должны использовать такую команду:

После чего вы можете наблюдать за стрессовым I/O с помощью iotop . Обратите внимание, что iotop требует привилегий root .

До

После

stress — это лишь один из множества инструментов для добавления нагрузки в систему.

Источник

Как провести стресс-тестирование вашей системы Linux

img

Повышение нагрузки на серверы Linux может быть хорошей идеей, если вы хотите увидеть, насколько хорошо они работают, когда они загружены. В этой статье мы рассмотрим некоторые инструменты, которые помогут вам нагрузить сервер и оценить результаты.

Для чего вам необходимо подвергать свою систему Linux нагрузке? Потому что иногда вам может потребоваться узнать, как система будет вести себя, когда она находится под большим давлением из-за большого количества запущенных процессов, интенсивного сетевого трафика, чрезмерного использования памяти и т. д. Этот вид тестирования позволяет убедиться, что система готова к использованию.

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

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

Создаем циклы своими руками

Данный первый метод предполагает запуск некоторых циклов в командной строке и наблюдение за тем, как они влияют на систему. Этот метод нагружает ЦП, значительно увеличивая нагрузку. Результаты можно легко увидеть с помощью команды uptime или аналогичных команд.

Читайте также:  Sublime text linux аналог

В приведенной ниже примере мы начинаем четыре бесконечных цикла. Вы можете увеличить количество циклов, добавляя цифры или используя выражение bash , например вместо «1 2 3 4».

for i in 1 2 3 4; do while : ; do : ; done & done

В примере выше, команда, запускает четыре бесконечных цикла в фоновом режиме.

$ for i in 1 2 3 4; do while : ; do : ; done & done [1] 205012 [2] 205013 [3] 205014 [4] 205015

В этом случае были запущены задания 1-4. Отображаются как номера заданий, так и идентификаторы процессов.

Чтобы увидеть влияние на средние значения нагрузки, используйте команду, подобную показанной ниже. В этом случае команда uptime запускается каждые 30 секунд:

$ while true; do uptime; sleep 30; done

Если вы собираетесь периодически запускать подобные тесты, вы можете поместить команду цикла в скрипт:

#!/bin/bash while true do uptime sleep 30 done

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

Рис. 1 Просмотр нагрузки на ЦП

Поскольку показанные нагрузки представляют собой средние значения за 1, 5 и 15 минут, потребуется некоторое время, чтобы значения вернулись к нормальным для системы значениям.

Чтобы остановить циклы, выполните команду kill , подобную приведенной ниже — при условии, что номера заданий равны 1-4, как было показано ранее в этой статье. Если вы не уверены, используйте команду jobs , чтобы проверить ID.

Специализированные инструменты для добавления нагрузки

Другой способ создать системный стресс — это использовать инструмент, специально созданный для того, чтобы нагружать систему за вас. Один из них называется stress и может воздействовать на систему разными способами. Стресс-инструмент — это генератор рабочей нагрузки, который обеспечивает стресс-тесты ЦП, памяти и I/O.

С параметром —cpu команда stress использует функцию извлечения квадратного корня, чтобы заставить ЦП усердно работать. Чем больше указано количество ЦП, тем быстрее будет нарастать нагрузка.

Второй сценарий watch-it (watch-it-2) может использоваться для оценки влияния на использование системной памяти. Обратите внимание, что он использует команду free , чтобы увидеть эффект стресса.

$ cat watch-it-2 #!/bin/bash while true do free sleep 30 done

Начало и наблюдение за стрессом:

Рис. 2 Стресс нагрузка ОЗУ

Чем больше ЦП указано в командной строке, тем быстрее будет нарастать нагрузка.

Рис. 3 Увеличение нагрузки при увеличении количества процессоров

Команда stress также может вызвать нагрузку на систему, добавив I/O и загрузку памяти с помощью параметров —io (input/output) и —vm (memory).

В следующем примере выполняется команда для добавления нагрузки на память, а затем запускается сценарий watch-it-2 :

Рис. 4 Запуск сценария watch-it-2

Другой вариант для стресса — использовать параметр —io , чтобы добавить в систему действия по вводу/выводу. В этом случае вы должны использовать такую команду:

После чего вы можете наблюдать за стрессовым I/O с помощью iotop . Обратите внимание, что iotop требует привилегий root .

До

После

stress — это лишь один из множества инструментов для добавления нагрузки в систему.

Источник

Оцените статью
Adblock
detector