Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение. |
Оптимизация работы процессов и управление ресурсами
Приоритеты процессов, настройка таблиц диспетчера
Настройка таблиц диспетчера памяти осуществляется в три этапа:
- вывод существующей таблицы в текстовый файл;
- редактирование этого файла;
- загрузка новой таблицы диспетчера в ядро.
Работа по выводу и загрузке таблиц осуществляется с помощью программы dispadmin.
Попробуем модифицировать таблицу диспетчера для класса разделения времени так, чтобы ни один процесс не занял приоритета 59 и ни один процесс не лишился этого приоритета, если мы его присвоим. Это может быть полезно для систем, где некие задачи надлежит вручную запускать с повышенныим приоритетом. Конечно, это привнесет несправедливость в таблицу приоритетов нашей системы, и слепо следовать нашему тестовому приоритету не стоит.
Посмотрим, как сейчас себя ведут наши процессы:
top last pid: 825; load averages: 0.05, 0.11, 0.12 20:35:24 68 processes: 67 sleeping, 1 on cpu CPU states: 99.8% idle, 0.2% user, 0.0% kernel, 0.0% iowait, 0.0% swap Memory: 128M real, 12M free, 206M swap in use, 387M swap free PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND 825 root 1 59 0 2260K 1340K cpu 0:00 0.61% top 345 root 1 59 0 57M 8648K sleep 1:37 0.35% Xsun 470 root 4 49 0 141M 55M sleep 2:11 0.28% soffice.bin 622 root 1 59 0 15M 2928K sleep 0:02 0.03% dtterm 461 root 1 49 0 15M 1864K sleep 0:03 0.00% dtterm 654 root 15 19 10 79M 10M sleep 0:08 0.00% java 434 root 5 59 0 22M 4060K sleep 0:04 0.00% dtwm 652 root 1 49 0 24M 3784K sleep 0:01 0.00% sdtimage 435 root 1 49 0 16M 1216K sleep 0:00 0.00% dtfile 672 root 1 49 0 4728K 740K sleep 0:00 0.00% bash 427 root 1 49 0 18M 0K sleep 0:00 0.00% dtsession 467 root 1 49 0 4728K 0K sleep 0:00 0.00% bash 650 root 1 49 0 3460K 0K sleep 0:00 0.00% more 649 root 1 49 0 3356K 0K sleep 0:00 0.00% sh 634 root 1 49 0 3304K 0K sleep 0:00 0.00% man
А теперь пусть приоритет 59 может получать только та программа, которой мы это разрешим, по умолчанию – всем нельзя.
Для этого мы сначала модифицируем таблицу диспетчера так, чтобы ни один процесс не получил приоритета 59. Вначале выведем текущую таблицу приоиритетов:
dispadmin -c TS -g > prior
# Time Sharing Dispatcher Configuration RES=1000 # ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait PRIORITY LEVEL 200 0 50 0 50 # 0 200 0 50 0 50 # 1 200 0 50 0 50 # 2 200 0 50 0 50 # 3 200 0 50 0 50 # 4 200 0 50 0 50 # 5 200 0 50 0 50 # 6 200 0 50 0 50 # 7 200 0 50 0 50 # 8 200 0 50 0 50 # 9 160 0 51 0 51 # 10 160 1 51 0 51 # 11 160 2 51 0 51 # 12 160 3 51 0 51 # 13 160 4 51 0 51 # 14 160 5 51 0 51 # 15 160 6 51 0 51 # 16 160 7 51 0 51 # 17 160 8 51 0 51 # 18 160 9 51 0 51 # 19 120 10 52 0 52 # 20 120 11 52 0 52 # 21 120 12 52 0 52 # 22 120 13 52 0 52 # 23 120 14 52 0 52 # 24 120 15 52 0 52 # 25 120 16 52 0 52 # 26 120 17 52 0 52 # 27 120 18 52 0 52 # 28 120 19 52 0 52 # 29 80 20 53 0 53 # 30 80 21 53 0 53 # 31 80 22 53 0 53 # 32 80 23 53 0 53 # 33 80 24 53 0 53 # 34 80 25 54 0 54 # 35 80 26 54 0 54 # 36 80 27 54 0 54 # 37 80 28 54 0 54 # 38 80 29 54 0 54 # 39 40 30 55 0 55 # 40 40 31 55 0 55 # 41 40 32 55 0 55 # 42 40 33 55 0 55 # 43 40 34 55 0 55 # 44 40 35 56 0 56 # 45 40 36 57 0 57 # 46 40 37 58 0 58 # 47 40 38 58 0 58 # 48 40 39 58 0 59 # 49 40 40 58 0 59 # 50 40 41 58 0 59 # 51 40 42 58 0 59 # 52 40 43 58 0 59 # 53 40 44 58 0 59 # 54 40 45 58 0 59 # 55 40 46 58 0 59 # 56 40 47 58 0 59 # 57 40 48 58 0 59 # 58 20 49 59 32000 59 # 59
Теперь мы его изменяем так как нам надо, и он становится иным (показаны только измененные последние две строки):
# ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait PRIORITY LEVEL 40 48 58 32000 58 # 58 20 59 59 0 59 # 59
dispadmin -c TS -s prior
last pid: 836; load averages: 0.14, 0.14, 0.13 20:43:48 68 processes: 66 sleeping, 1 running, 1 on cpu CPU states: 94.8% idle, 5.0% user, 0.2% kernel, 0.0% iowait, 0.0% swap Memory: 128M real, 10M free, 204M swap in use, 389M swap free PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND 470 root 4 49 0 141M 57M sleep 2:34 7.64% soffice.bin 345 root 1 59 0 56M 7228K sleep 1:46 0.86% Xsun 836 root 1 59 0 2260K 1336K cpu 0:00 0.77% top 622 root 1 59 0 15M 2972K sleep 0:02 0.03% dtterm 672 root 1 48 0 4728K 1176K sleep 0:00 0.03% bash 654 root 15 49 0 79M 11M run 0:08 0.02% java 461 root 1 49 0 15M 1924K sleep 0:03 0.02% dtterm 434 root 5 59 0 22M 4084K sleep 0:04 0.00% dtwm 652 root 1 49 0 24M 3784K sleep 0:01 0.00% sdtimage 435 root 1 49 0 16M 1216K sleep 0:00 0.00% dtfile 427 root 1 49 0 18M 0K sleep 0:00 0.00% dtsession 467 root 1 49 0 4728K 0K sleep 0:00 0.00% bash 650 root 1 49 0 3460K 0K sleep 0:00 0.00% more 649 root 1 49 0 3356K 0K sleep 0:00 0.00% sh 634 root 1 49 0 3304K 0K sleep 0:00 0.00% man
Те процессы, которые по-прежнему имеют приоритет 59, можно перезапустить.
ps –ecL | grep 59.
остановим и перезапустим. Кроме того, можно регулировать приоритет процесса напрямую с помощью команды priocntl, как показано ниже. Понизим на 20 единиц приоритет всех процессов в классе разделения времени:
priocntl -s -c TS -p -20
Снова запускаем top:
last pid: 987; load averages: 0.00, 0.03, 0.07 21:00:41 66 processes: 65 sleeping, 1 on cpu CPU states: 99.4% idle, 0.0% user, 0.6% kernel, 0.0% iowait, 0.0% swap Memory: 128M real, 6188K free, 202M swap in use, 391M swap free PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND 984 root 1 58 0 2260K 1336K cpu 0:00 0.11% top 345 root 1 58 0 56M 7184K sleep 1:52 0.07% Xsun 622 root 1 58 0 15M 3500K sleep 0:03 0.02% dtterm 470 root 4 48 0 141M 57M sleep 2:40 0.00% soffice.bin 654 root 15 58 0 79M 13M sleep 0:08 0.00% java 434 root 5 58 0 22M 4360K sleep 0:04 0.00% dtwm 461 root 1 58 0 15M 2628K sleep 0:03 0.00% dtterm 652 root 1 58 0 24M 5312K sleep 0:01 0.00% sdtimage 349 root 7 39 6 4532K 704K sleep 0:00 0.00% mibiisa 212 root 18 49 3 2872K 720K sleep 0:00 0.00% nscd 435 root 1 58 0 16M 1908K sleep 0:00 0.00% dtfile 436 root 1 58 0 16M 1864K sleep 0:00 0.00% sdtperfmeter 427 root 1 58 0 18M 1368K sleep 0:00 0.00% dtsession 672 root 1 58 0 4732K 1196K sleep 0:00 0.00% bash 276 root 1 58 0 2068K 580K sleep 0:00 0.00% xntpd
Настройку диспетчерских таблиц следует проводить с осторожностью. Неверные действия могут привести к потере устойчивости и неполадкам в работе производственной системы. Тестируйте внимательно!
Регулирование приоритетов
Регулировать приоритет процесса, как показано выше, можно с помощью команды priocntl. Ключ -s означает требование установить приоритет. Ключ -p позволяет задать относительное изменение приоритета, а для указания конкретного признака процесса (идентификатора и т.п.) следует использовать ключ -i (признак идентификатора обозначается pid, другие признаки поименованы в руководстве по priocntl ).
Например, для понижения приоритета процесса с PID, равным 200, используйте
priocntl -s -c TS -p –20 –i pid 200
Для вывода списка части процессов с заголовком вместе, применяйте POSIX-совместимую программу grep:
/usr/bin/ps -ecL |/usr/xpg4/bin/grep -E 'nscd|PID'
Оптимизация пейджинга и свопинга посредством настройки ядра
Алгоритм пейджинга и свопинга в Solaris предусматривает возможность явного указания границ свободной памяти в системе, по достижении которых начинается вначале активный пейджинг (выгрузка отдельных страниц), а при дальнейшем уменьшении свободной памяти – свопинг (выгрузка всех страниц процесса сразу).