Файл: Лабораторная работа 5 Управление памятью в oc linux Выполнил студент группы M32111 Михайличенко Александр Олегович.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 242
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство науки и высшего образования Российской ФедерацииФедеральное государственное автономное образовательное учреждение высшего образования«Национальный исследовательский университет ИТМО»Факультет информационных технологий и программированияЛабораторная работа №5Управление памятью в OCLinuxВыполнил студент группы № M32111Михайличенко Александр ОлеговичПодпись:
Санкт-Петербург2022Ход работыДанные о конфигурации ОС:
Графики изменения значений памяти:Этап №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 можем подобрать.
Санкт-Петербург2022Ход работыДанные о конфигурации ОС:-
Общий объем оперативной памяти: 1024 Мб -
Объем раздела подкачки: 820 Мб -
Размер страницы виртуальной памяти: 4 Кб -
Объем свободной физической памяти в ненагруженной системе: 615 Мб -
Объем свободного пространства в разделе подкачки в ненагруженной системе: 820 Мб
Графики изменения значений памяти:Этап №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 можем подобрать.