Файл: Лабораторная работа 5 Управление памятью в oc linux Выполнил студент группы M32111 Михайличенко Александр Олегович.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 05.12.2023

Просмотров: 153

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Министерство науки и высшего образования Российской Федерации

Федеральное государственное автономное образовательное учреждение высшего образования

«Национальный исследовательский университет ИТМО»

Факультет информационных технологий и программирования

Лабораторная работа №5

Управление памятью в OCLinux

Выполнил студент группы № M32111

Михайличенко Александр Олегович

Подпись:

Санкт-Петербург

2022
Ход работы
Данные о конфигурации ОС:

  • Общий объем оперативной памяти: 1024 Мб

  • Объем раздела подкачки: 820 Мб

  • Размер страницы виртуальной памяти: 4 Кб

  • Объем свободной физической памяти в ненагруженной системе: 615 Мб

  • Объем свободного пространства в разделе подкачки в ненагруженной системе: 820 Мб



Эксперимент №1

Подготовительный этап
Создание скрипта mem.bash:



Этап №1
Запустив созданный скрипт mem.bash и дождавшись аварийной остановки, получил в консоли сообщение:

Значения в файле report.log:


Использовав две консоли, запустил на одной мониторинг командой top, а на другой – скрипт, после чего получил в файле data список строк с информацией о процессе и свободной памяти:

Последние записи о скрипте в системном журнале:


Файл report.log:


Графики изменения значений памяти:


Этап №2
Создал копию скрипта mem.bash – mem2.bash, настроив на запись в файл report2.log:

Вновь использовав две консоли, запустил на одной мониторинг командой top, а на другой – скрипты, после чего получил в файле data и data2 список строк с информацией о процессе и свободной памяти:


Последние записи о скрипте в системном журнале:



Файл report.log:

Файл report2.log:



Графики изменения значений памяти:


Выводы: при достижении «критического» значения физической памяти (63-67 МБ) происходит переход на память подкачки: на графике хорошо видно, что, как только график физической памяти начинает убывать сильно медленнее, происходит резкий скачок (резкое убывание) значения swap и по достижении 30-33 МБ процесс завершается (когда суммарное количество свободной памяти колеблется в районе 100 МБ).

При запуске же двух скриптов, какое-то время они работают вдвоем и их графики практически совпадают, но затем (примерно на 12 секунде графика 1) второй процесс умирает, происходит резкий скачок свободной физической памяти (mem1 идет вверх), swap какое-то время остается без изменений, т.к. есть возможность брать память, после чего, когда mem1 достигает значений около 70 (вновь первый случай), swap1 убывает и вновь при суммарном значении около 100МБ и второй (первый по счету) процесс завершает работу.

Эксперимент №2

Подготовительный этап
Создание скрипта newmem.bash (копирование mem.bash и небольшое его изменение):




Основной этап
Создание скрипта, который будет K раз запускать newmem.bash с переданным числом N:


В качестве первого значения N взял величину, в 10 раз меньшую чем размер массива, при котором происходила аварийная остановка в прошлом эксперименте: т.к. таким значением было 18.000.000, то N = 1.800.000; K = 10:

После этого изменил значение K на 30 (N = 1.800.000):


Это лишь один из множества тех, кто отвалился

При N = 500000 программа отработала без ошибок:

При N = 700000 около 3 процессов обвалилось.
При N = 640000 отработало без ошибок:


При N = 645000 один процесс завершился, а вот при N = 644000 все отработало без проблем:

Таким образом, N = 644000 и есть максимально возможное значение N.
Выводы: от того, насколько большим будет значение N (условие выхода из бесконечного цикла) зависит, насколько много скриптов одновременно мы можем запустить, чтобы при этом каждый из них не закончил свою работу с ошибкой. Естественно, это значение зависит от конфигурации машины: чем больше памяти мы можем выделить вообще, тем большее значение N можем подобрать.