Файл: Лабораторная работа 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 можем подобрать.