Естественно, для разных задач подходят разные компьютеры. Например, компьютеры с процессором Alpha обычно быстрее своих Intel-собратьев выполняют расчеты с числами с плавающей запятой. Это значит, что вычисления, связанные с расчетами координат, решением уравнений или моделированием молекул, быстрее выполнит компьютер с процессором Alpha.
В настоящее время процессоры Alpha широко используются в высокопроизводительных серверах от Hewlett-Packard и в других, еще более специализированных системах, таких как суперкомпьютеры Cray и Fujitsu.
Если же речь идет о целочисленных вычислениях, пусть и достаточно громоздких, например, рендеринге, преобразовании графических объектов, 3D-визуализации, где координаты могут быть заданы только целыми числами, процессоры Intel отлично справятся с ними.
Сейчас мы говорили о процессорах Alpha и Intel, но на деле разговор касается двух разных архитектур - RISC и CISC. Процессоры Intel традиционно тяготеют к последней, в то время как процессоры SPARC - к первой. ОС Solaris выпускается в версиях для обеих архитектур, хотя изначально компания Sun не выпускала версию Solaris для Intel, а многочисленные пользователи этой системы во всем мире до сих пор утверждают, что версия для SPARC более
Надо отметить отличные результаты процессора Itanium, сравнительно нового процессора Intel с 64-разрядной архитектурой, который прекрасно показал себя в тесте вычислений с плавающей запятой SPECfp2000, что выгодно отличает его от предшествовавших 32-разрядных собратьев, но менее удачно выступил в целочисленном тесте.
В заключение разговора о предпочтительности той или иной аппаратуры следует сказать, что:
| Процессор, частота | CPECint2000 (base) | CPECfp2000 (base) | Система |
|---|---|---|---|
| Alpha21264C, 1.01 |
561 | 585 | Compaq AlphaServer GS160 |
| Alpha21264C, 1 |
776 | 621 | Compaq AlphaServer ES45 |
| Alpha21264B, 833 |
518 | 621 | Compaq AlphaServer ES40 |
| Itanium, 800 |
379 | 701 | HP rx4610 |
| Itanium, 800 |
358 | 655 | HP i2000 |
| 537 | 701 | Sun Blade 2050 | |
| 470 | 629 | Sun Blade 1000 | |
| 363 | 312 | Sun Blade 1000 | |
| Power4, 1.3. |
790 | 1098 | IBM eServer 690 |
Для оценки
Прежде всего, следует выяснить, есть ли в системе узкие места. Например, постоянная загрузка процессора на 100% может говорить о том, что в системе запущено слишком много конкурирующих процессов, или о работе вычислительного процесса, который постоянно требует процессорное время (что вполне нормально, если только ваш сервер не используют хакеры для подбора или расшифровки паролей), или же о том, что мощности процессора недостаточно для решения задач возложенных на него, и этот компьютер требует модернизации (начальство против? - попробуйте распределить нагрузку в сети или поменять работу - что сейчас легче сделать?)
Если одновременно запущенные процессы мешают друг другу, непрерывно требуя процессорное время, увеличивая нагрузку на
Для оценки загрузки процессора и состояния
top last pid: 501; load averages: 0.08, 0.34, 0.40 19:12:00 59 processes: 58 sleeping, 1 on cpu CPU states: 96.2% idle, 0.8% user, 1.0% kernel, 2.0% iowait, 0.0% swap Memory: 128M real, 3596K free, 132M swap in use, 466M swap free PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND 345 root 1 59 0 24M 9972K sleep 0:11 1.14% Xsun 470 root 4 49 0 128M 71M sleep 0:52 1.01% soffice.bin 501 root 1 59 0 2228K 1336K cpu 0:00 0.55% top 461 root 1 59 0 15M 3184K sleep 0:00 0.37% dtterm 467 root 1 49 0 4708K 832K sleep 0:00 0.00% bash 435 root 1 49 0 16M 1760K sleep 0:00 0.00% dtfile 434 root 5 59 0 22M 6304K sleep 0:01 0.00% dtwm 427 root 1 49 0 18M 0K sleep 0:00 0.00% dtsession 436 root 1 59 0 14M 3292K sleep 0:00 0.00% sdtperfmeter 265 root 26 59 0 5480K 1456K sleep 0:00 0.00% htt_server 460 root 1 59 0 3064K 1372K sleep 0:00 0.00% dtexec 315 root 1 59 0 6900K 1324K sleep 0:00 0.00% dtlogin 411 root 1 59 0 3784K 1300K sleep 0:00 0.00% sdt_shell 183 root 3 59 0 5832K 1188K sleep 0:00 0.00% automountd 195 root 13 59 0 5660K 1100K sleep 0:00 0.00% syslogd
Программа sar подобна vmstat и выдает статистику по работе системы, ее можно запустить для выдачи определенных параметров одномоментно или для периодического вывода сведений, например, для десятикратного измерения значений стандартного набора параметров с периодом 5 секунд:
sar 5 10 SunOS sunny 5.9 Generic_112234-03 i86pc 07/03/2004 19:12:34 %usr %sys %wio %idle 19:12:39 0 1 0 99 19:12:44 0 0 0 100 19:12:49 0 1 0 99 19:12:54 4 1 0 95 19:12:59 0 0 0 100 19:13:04 0 1 0 99 19:13:09 5 1 0 94 19:13:14 1 24 66 8 19:13:19 2 35 38 25 19:13:24 3 20 17 60
Если необходимо увеличить размер конкретного раздела, то есть два пути: физически изменить размер раздела или создать метаустройство, которое физически будет состоять из нескольких разделов на одном или нескольких
Чтобы физически изменить размер раздела, надо, чтобы на
Второй способ годится только для Solaris (другие коммерческие системы UNIX имеют свои собственные средства решения этой проблемы, которые здесь не обсуждаются). Метаустройство создается командой metainit. Программа growfs, которая служит для увеличения размера
Синтаксис команды growfs:
/usr/sbin/growfs [-M точка_монтирования] [параметры_newfs] [rawdevice]
Аргументы команды growfs обозначают:
точка_монтирования - точка монтирования файлововй системы, которую требуется расширить. При этом на время расширения произойдет блокировка параметры_newfs - те же параметры, которые может принимать программа newfs при создании новой rawdevice - имя файла прямого доступа для метаустройства в каталоге /dev/md/rdsk.Увеличение размера раздела выполняется посредством добавления нового раздела к метаустройству и последущего запуска growfs. При увеличении размера зеркала (т.е. уже существующего метаустройства с реализованным зеркалированием, или, иначе говоря, с RAID уровня 1) следует вначале увеличить каждую из частей зеркала с помощью metaattach, как показано ниже, а затем - всю
Особым случаем является расширение журналируемого метаустройства (trans metadevice), которое состоит из двух устройств - главного и журналирующего. Увеличивается только размер
Програма growfs на время модификации
Подробнее об ограничениях, связанных с размером разделов, рассказано в руководстве по newfs и growfs.
Представим себе, что требуется увеличить размер раздела /dev/dsk/c1t0d0s3, на котором расположена /export. Для этого нам потребуется вначале преобразовать этот раздел в метаустройство, поскольку добавлять дополнительное пространство можно только к метаустройству. Допустим, добавлять к существующему разделу мы будем пока еще пустой, не содержащий /dev/dsk/c2t0d0s3:
metainit -f d8 2 1 c1t0d0s3 1 c2t0d0s3
Эта команда вызывает объединение разделов /dev/dsk/c1t0d0s3 и /dev/dsk/c2t0d0s3 в новое метаустройство d8. Теперь изменяем /etc/vfstab так, чтобы /export монтировалась на метаустройство d8:
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options /dev/md/dsk/d8 /dev/md/dsk/d8 /export ufs 2 yes -
Демонтируем /export и снова монтируем его (при монтировании будет использовано новое устройство из /etc/vfstab ):
umount /export mount /export
Запускаем growfs для расширения
growfs -M /export/dev/md/rdsk/d8
Ключ M нужен программе growfs для того, чтобы можно было увеличить размер смонтированной
Файл /etc/lvm/md.tab содержит таблицу метаустройств, которая служит файлом
С помощью growfs можно расширять только
/usr или корневой каталог или является активным разделом Кроме очевидных советов купить более
Дисковая активность (т.е. обращения к
Запись данных на
Приложение может вызвать функцию fsync() для принудительного сбрасывания данных из файлового кэша на
Вторая причина дисковой активности,
При частых и объемных операциях с файлами, файловый кэш быстро заполняет значительный объем
Демон fsflush руководствуется значением двух переменных, squid и tune_t_fsflushr, - значение им можно присвоить в файле /etc/system. Для систем с большим объемом squid в 30 с делает процесс fsflush чересчур дорогостоящим.
Для того чтобы поубавить аппетит fsflush, время цикла синхронизации следует увеличить, изменив в большую сторону значение squid. Поскольку fsflush оказывает влияние на всю систему, лучше всего, чтобы он работал в течение более коротких промежутков времени. Для этого значение tune_t_fsflushr (время, отведенное fsflush на синхронизацию) должно быть меньше: выделив демону меньшее число секунд, вы заставите его выполнять меньшую по объему запись.
Одной из проблем в системах, где происходит частая запись больших объемов данных в файлы на
Переменная ядра отвечает за включение механизма write throttling (приостановки записи в файл). Если эта переменная равна 1, то приостановка записи разрешена. По умолчанию это именно так.
Приостановка означает, что когда объем данных, ожидающих записи в один файл, превышает верхний предел , запись в этот файл блокируется до момента, пока объем данных в буфере не снизится до . Соответственно, пока запись в файл блокирована, пополнение буфера не осуществляется, зато данные из буфера записываются на
ufs_throttles. Его значение увеличивается на единицу при каждой приостановке записи, и постоянное увеличение этого значения говорит о том, что пределы и следует увеличить.
Такое увеличение вполне допустимо и даже полезно при использовании метаустройств с расщеплением (striping metadevices), когда данные одного файла поблочно пишутся на несколько устройств одновременно (первый блок - на первый и не должны быть слишком близкими, но и не должны очень сильно отличаться. Если они слишком близки, то приостановки записи будут случаться очень часто: как только объем буфера окажется у нижнего предела и запись будет разрешена, буфер сразу превысит верхний предел и запись приостановится. Большая разница между значениями приведет к тому, что запись в файл будет заблокирована при превышении верхнего предела, и после этого пройдет значительное время до разблокировки записи, так как буфер не может быть
мгновенно "сброшен" на
Рекомендуется нижний предел устанавливать равным 1/32 объема оперативной
Приостановка записи производится на пофайловой основе, т.е. блокировка записи в один файл, буфер которого заполнен более чем байтами, не влияет на запись в другие файлы.
Чтобы не искать номер индексного дескриптора по имени файла каждый раз, когда к файлу происходит обращение, система кэширует имена файлов и каталогов вместе с номерами их виртуальных
При открытии файла DNLC вычисляет соответствующий индексный дескриптор по имени этого файла. Если имя уже находится в кэше, то оно отыскивается очень быстро, поскольку не происходит сканирования каталогов на
Кэш имен каталогов не нуждается в maxusers. По умолчанию он определяется как (17x maxusers )+90 (в Solaris 2.5.1) или 4x( maxusers + max_nprocs )+320 (в Solaris 2.6 и выше). Другие параметры, на которые тоже оказывает влияние maxusers, обсуждены в лекции 10.
Команда
vmstat -s
показывает частоту успешных попаданий в DNLC с момента начала работы системы.
Если частота промахов велика (попаданий обычно не должно быть меньше 90%), следует подумать об увеличении размера DNLC. Проверим этот показатель работы системы командой
vmstat -s |grep 'name lookups' 422920 total name lookups (cache hits 99%)
Количество запросов к DNLC в секунду можно получить из поля namei/s в выводе команды sar -a:
sar -a 1 5 SunOS sunny 5.9 Generic_112234-03 i86pc 07/03/2004 19:26:50 iget/s namei/s dirbk/s 19:26:51 0 1 0 19:26:52 0 0 0 19:26:53 0 0 0 19:26:54 0 4 0 19:26:55 0 0 0
Как видно, система не очень-то загружена запросами к файлам и одыхает. А теперь запустим операцию, которая точно требует многократного обращения к DNLC:
find / -name "top" [1] 577 sar -a 1 5 SunOS sunny 5.9 Generic_112234-03 i86pc 07/03/2004 19:27:14 iget/s namei/s dirbk/s 19:27:15 1675 2592 1922 19:27:16 1220 2365 1474 19:27:17 968 1882 1172 19:27:18 1057 2107 1292 19:27:19 1231 2211 1443 vmstat -s |grep 'name lookups' 503370 total name lookups (cache hits 86%)
При интенсивных файловых операциях и доступе ко многим каталогам одновременно эффективность кэша имен каталогов снижается, но по-прежнему остается достаточно большой.
Как уже обсуждалось в лекциях 5 и 6, при создании
df -e Filesystem ifree /proc 862 /dev/dsk/c0t0d0s0 294838 fd 0 /dev/dsk/c0t0d0s4 246965 swap 9796 /dev/dsk/c1t0d0s0 3256077
Так как
Количество группируемых блоков равно параметру maxcontig . В версиях, предшествующих Solaris 8, этот параметр по умолчанию был равен семи, и, таким образом, операция ввода-вывода происходила одновременно с семью последовательными блоками и позволяла одновременно записать порцию данных размером 56 Kбайт. Такое значение по умолчанию связано с ограничениями конструкции в раннем оборудовании Sun: системы, основанные на архитектуре sun4, не способны передавать за одну операцию более 64 Kбайт. В архитектурах sun4c, sun4m, sun4d и sun4u таких ограничений нет. В Solaris 8 значение по умолчанию изменилось и составляет 16 блоков (128 Kбайт).
Изменение maxcontig может серьезно повлиять на maxcontig не принесет особой пользы.
maxcontig дает наилучший результат, если ее выполнить при создании
Чтобы оценить загрузку
iostat -x 5
в тот момент, когда интенсивность ввода-вывода будет наиболее близка к обычному (или пиковому, в зависимости от того, как вы хотите настроить
... device r/s w/s kr/s kw/s wait actv svc_t %w %b cmdk0 17.6 2.9 138.4 53.1 1.1 0.2 60.1 3 13 fd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 sd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 nfs1 0.0 0.0 0.0 0.0 0.0 0.0 9.3 0 0 extended device statistics device r/s w/s kr/s kw/s wait actv svc_t %w %b cmdk0 307.7 0.2 766.1 2.0 0.0 0.9 2.9 0 89 fd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 sd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 extended device statistics device r/s w/s kr/s kw/s wait actv svc_t %w %b cmdk0 253.4 0.7 768.0 6.0 0.0 0.9 3.6 0 88 fd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 sd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 ...
Средние значения загрузки можно получить из колонок kr/s и kw/s, в более ранних версиях системы для получения таких значений приходилось делить содержимое колонок "K/r" и "K/w" на "r/s" и "w/s" соответственно для получения средних показателей "прочитано килобайт в секунду" и "записано килобайт в секунду".
Для получения информации о распределении файлов по размеру можно использовать команду:
quot -c file_system
Например, вот каково распределение в моей тестовой системе:
quot -c /export/home ... 1128 1 165156 1136 1 166292 1160 1 167452 1176 1 168628 1184 1 169812 1192 1 171004 1224 1 172228 1232 1 173460 1240 1 174700 1264 1 175964 1360 1 177324 1376 1 178700 1440 1 180140 1488 1 181628 1536 1 183164 1608 1 184772 1648 1 186420 1704 1 188124 1768 1 189892 1792 1 191684 1832 1 193516 2047 40 437396 ...
Первая колонка вывода - это размер файла в блоках, вторая - число файлов такого размера, третья - общее число блоков, занятых файлами такого размера и меньшими.
Вопрос об установке в систему дополнительной оперативной
Если виртуальной
Индикаторами нехватки
При этом высокая активность может быть временной или постоянной. В любом случае, имеет смысл уяснить ее причину.
Повышенная частота сканирования страниц ( используйте команды
sar -g
или
vmstat
При анализе частоты сканирования с помощью vmstat имеет смысл запустить эту программу с параметром 60 для получения статистики каждые 60 секунд:
vmstat 60 kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr cd f0 s0 -- in sy cs us sy id 0 0 0 482100 7288 23 63 126 31 46 8 54 28 0 0 0 333 1519 327 5 11 84 0 1 0 470816 2060 0 26 1 51 103 0 123 240 0 0 0 960 969 649 4 92 4 ...
Первую строку (суммарную статистику) можно игнорировать. Если показатель page/sr остается выше 200 страниц в секунду в течение длительного времени, это говорит о вероятной нехватке оперативной
Постоянно низкое значение частоты сканирования страниц говорит о том, что системе хватает
Если устройство, на котором находится область iostat.
В Solaris 2.6 и выше следует использовать команду
iostat -xPnce
для получения информации об активности передачи данных в/из конкретных разделов
iostat -xc
которая позволяет получить статистику ввода-вывода только для целого
Если
Можно также использовать
sar -d
или
vmstat
Длинная очередь страниц для выгрузки свидетельствует о необходимости нарастить оперативную
В системах Solaris, начиная с версии 2.6, есть возможность выяснить, какие программы сколько
Для получения детальной информации дайте команду
/usr/proc/bin/pmap -x PID
Информация о размере процесса в оперативной
В пакете SunPro есть отладчик dbx, который помогает находить источник утечки
Статистику использования разделяемой
ipcs -mb
Эти программы следует использовать для определения размера процессов и основных потребителей
Размер области
Для управления пространством
Для выяснения общего объема виртуальной
Если /tmp как tmpfs, команда
df -k /tmp
покажет общий объем свободной виртуальной
В Solaris применяются оба широко известных типа обмена страницами между оперативной
physmem: общее количество страниц в оперативной
lotsfree: сканер страниц начинает работать, когда количество свободной оперативной lotsfree.
Значение по умолчанию - physmem/64, но оно может быть изменено в /etc/system. Сканер страниц по умолчанию запускается в режиме , столбик sr в выводе vmstat ) устанавливается равной slowscan , который по умолчанию равен fastscan/10.
minfree: пока объем свободной lotsfree и minfree, частота сканирования страниц растет линейно от slowscan к fastscan по мере уменьшения размера свободной minfree по умолчанию - desfree/2, значение fastscan по умолчанию - physmem/4. Если свободной desfree (что по умолчанию равно lotsfree/2 ), сканер страниц начинает запускаться с частотой 100 раз в секунду. За каждый свой запуск сканер страниц проверяет desscan страниц. Этот
maxpgio: этот
throttlefree: когда свободной оперативной throttlefree (по умолчанию этот minfree ), запросы процессов на выделение им новых страниц
cachefree: имеет значение для систем Solaris 7 (или систем 2.5.1 и 2.6 с установленными самыми свежими обновлениями); если в этих системах priority_paging установлен равным 1 (т.е. priority paging включен), то пока свободной lotsfree, освобождаются только страницы файлового кэша в lotsfree. Системы Solaris более поздних версий, начиная с 8-й, имеют другой алгоритм освобождения оперативной priority paging и устанавливать значение cachefree.
В системах Solaris до версии 7 включительно сканер страниц работает так: для выбранных сканером страниц обнуляется флаг "используемости" страницы, выбор страниц происходит со скоростью, которую можно посмотреть с помощью vmstat или sar -g (handspreadpages страниц сканер проверяет, установлен ли флаг "используемости". Фактически, сканер состоит из двух процессов, один из которых идет по handspreadpages по умолчанию равен physmem/4.
(рис 17.1) Зависимость частоты запуска сканера страниц от объема свободной памятиВ системах Solaris 8 и более новых алгоритм освобождения ). Он рассчитан на то, что при нехватке
В результате этих изменений в системах Solaris, начиная с версии 8, vmstat сообщает иные цифры, чем в той же ситуации в более старых системах, а именно:
Для получения отдельного отчета по
vmstat -p
Если системе в течение некоторого времени (обычно 30 секунд подряд) не хватает desfree ), то начинается maxslp секунд. По умолчанию maxslp равно 20. Этот режим
Если дело дошло до того, что desfree, и, кроме того, два и более процессов выстроились в очередь к процессору, а активность desfree.
Не выгружаются:
Значительный объем чтения и записи данных может вызвать нехватку
Для этого можно использовать функцию directio() или forcedirectio при монтировании discovered_direct_iosz (см. man vxtunefs ) (по умолчанию - 256 Kбайт).
Если в вашей discovered_direct_iosz.
Естественно, для разных задач подходят разные компьютеры. Например, компьютеры с процессором Alpha обычно быстрее своих Intel-собратьев выполняют расчеты с числами с плавающей запятой. Это значит, что вычисления, связанные с расчетами координат, решением уравнений или моделированием молекул, быстрее выполнит компьютер с процессором Alpha.
В настоящее время процессоры Alpha широко используются в высокопроизводительных серверах от Hewlett-Packard и в других, еще более специализированных системах, таких как суперкомпьютеры Cray и Fujitsu.
Если же речь идет о целочисленных вычислениях, пусть и достаточно громоздких, например, рендеринге, преобразовании графических объектов, 3D-визуализации, где координаты могут быть заданы только целыми числами, процессоры Intel отлично справятся с ними.
Сейчас мы говорили о процессорах Alpha и Intel, но на деле разговор касается двух разных архитектур - RISC и CISC. Процессоры Intel традиционно тяготеют к последней, в то время как процессоры SPARC - к первой. ОС Solaris выпускается в версиях для обеих архитектур, хотя изначально компания Sun не выпускала версию Solaris для Intel, а многочисленные пользователи этой системы во всем мире до сих пор утверждают, что версия для SPARC более
Надо отметить отличные результаты процессора Itanium, сравнительно нового процессора Intel с 64-разрядной архитектурой, который прекрасно показал себя в тесте вычислений с плавающей запятой SPECfp2000, что выгодно отличает его от предшествовавших 32-разрядных собратьев, но менее удачно выступил в целочисленном тесте.
В заключение разговора о предпочтительности той или иной аппаратуры следует сказать, что:
| Процессор, частота | CPECint2000 (base) | CPECfp2000 (base) | Система |
|---|---|---|---|
| Alpha21264C, 1.01 |
561 | 585 | Compaq AlphaServer GS160 |
| Alpha21264C, 1 |
776 | 621 | Compaq AlphaServer ES45 |
| Alpha21264B, 833 |
518 | 621 | Compaq AlphaServer ES40 |
| Itanium, 800 |
379 | 701 | HP rx4610 |
| Itanium, 800 |
358 | 655 | HP i2000 |
| 537 | 701 | Sun Blade 2050 | |
| 470 | 629 | Sun Blade 1000 | |
| 363 | 312 | Sun Blade 1000 | |
| Power4, 1.3. |
790 | 1098 | IBM eServer 690 |
Для оценки
Прежде всего, следует выяснить, есть ли в системе узкие места. Например, постоянная загрузка процессора на 100% может говорить о том, что в системе запущено слишком много конкурирующих процессов, или о работе вычислительного процесса, который постоянно требует процессорное время (что вполне нормально, если только ваш сервер не используют хакеры для подбора или расшифровки паролей), или же о том, что мощности процессора недостаточно для решения задач возложенных на него, и этот компьютер требует модернизации (начальство против? - попробуйте распределить нагрузку в сети или поменять работу - что сейчас легче сделать?)
Если одновременно запущенные процессы мешают друг другу, непрерывно требуя процессорное время, увеличивая нагрузку на
Для оценки загрузки процессора и состояния
top last pid: 501; load averages: 0.08, 0.34, 0.40 19:12:00 59 processes: 58 sleeping, 1 on cpu CPU states: 96.2% idle, 0.8% user, 1.0% kernel, 2.0% iowait, 0.0% swap Memory: 128M real, 3596K free, 132M swap in use, 466M swap free PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND 345 root 1 59 0 24M 9972K sleep 0:11 1.14% Xsun 470 root 4 49 0 128M 71M sleep 0:52 1.01% soffice.bin 501 root 1 59 0 2228K 1336K cpu 0:00 0.55% top 461 root 1 59 0 15M 3184K sleep 0:00 0.37% dtterm 467 root 1 49 0 4708K 832K sleep 0:00 0.00% bash 435 root 1 49 0 16M 1760K sleep 0:00 0.00% dtfile 434 root 5 59 0 22M 6304K sleep 0:01 0.00% dtwm 427 root 1 49 0 18M 0K sleep 0:00 0.00% dtsession 436 root 1 59 0 14M 3292K sleep 0:00 0.00% sdtperfmeter 265 root 26 59 0 5480K 1456K sleep 0:00 0.00% htt_server 460 root 1 59 0 3064K 1372K sleep 0:00 0.00% dtexec 315 root 1 59 0 6900K 1324K sleep 0:00 0.00% dtlogin 411 root 1 59 0 3784K 1300K sleep 0:00 0.00% sdt_shell 183 root 3 59 0 5832K 1188K sleep 0:00 0.00% automountd 195 root 13 59 0 5660K 1100K sleep 0:00 0.00% syslogd
Программа sar подобна vmstat и выдает статистику по работе системы, ее можно запустить для выдачи определенных параметров одномоментно или для периодического вывода сведений, например, для десятикратного измерения значений стандартного набора параметров с периодом 5 секунд:
sar 5 10 SunOS sunny 5.9 Generic_112234-03 i86pc 07/03/2004 19:12:34 %usr %sys %wio %idle 19:12:39 0 1 0 99 19:12:44 0 0 0 100 19:12:49 0 1 0 99 19:12:54 4 1 0 95 19:12:59 0 0 0 100 19:13:04 0 1 0 99 19:13:09 5 1 0 94 19:13:14 1 24 66 8 19:13:19 2 35 38 25 19:13:24 3 20 17 60
Если необходимо увеличить размер конкретного раздела, то есть два пути: физически изменить размер раздела или создать метаустройство, которое физически будет состоять из нескольких разделов на одном или нескольких
Чтобы физически изменить размер раздела, надо, чтобы на
Второй способ годится только для Solaris (другие коммерческие системы UNIX имеют свои собственные средства решения этой проблемы, которые здесь не обсуждаются). Метаустройство создается командой metainit. Программа growfs, которая служит для увеличения размера
Синтаксис команды growfs:
/usr/sbin/growfs [-M точка_монтирования] [параметры_newfs] [rawdevice]
Аргументы команды growfs обозначают:
точка_монтирования - точка монтирования файлововй системы, которую требуется расширить. При этом на время расширения произойдет блокировка параметры_newfs - те же параметры, которые может принимать программа newfs при создании новой rawdevice - имя файла прямого доступа для метаустройства в каталоге /dev/md/rdsk.Увеличение размера раздела выполняется посредством добавления нового раздела к метаустройству и последущего запуска growfs. При увеличении размера зеркала (т.е. уже существующего метаустройства с реализованным зеркалированием, или, иначе говоря, с RAID уровня 1) следует вначале увеличить каждую из частей зеркала с помощью metaattach, как показано ниже, а затем - всю
Особым случаем является расширение журналируемого метаустройства (trans metadevice), которое состоит из двух устройств - главного и журналирующего. Увеличивается только размер
Програма growfs на время модификации
Подробнее об ограничениях, связанных с размером разделов, рассказано в руководстве по newfs и growfs.
Представим себе, что требуется увеличить размер раздела /dev/dsk/c1t0d0s3, на котором расположена /export. Для этого нам потребуется вначале преобразовать этот раздел в метаустройство, поскольку добавлять дополнительное пространство можно только к метаустройству. Допустим, добавлять к существующему разделу мы будем пока еще пустой, не содержащий /dev/dsk/c2t0d0s3:
metainit -f d8 2 1 c1t0d0s3 1 c2t0d0s3
Эта команда вызывает объединение разделов /dev/dsk/c1t0d0s3 и /dev/dsk/c2t0d0s3 в новое метаустройство d8. Теперь изменяем /etc/vfstab так, чтобы /export монтировалась на метаустройство d8:
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options /dev/md/dsk/d8 /dev/md/dsk/d8 /export ufs 2 yes -
Демонтируем /export и снова монтируем его (при монтировании будет использовано новое устройство из /etc/vfstab ):
umount /export mount /export
Запускаем growfs для расширения
growfs -M /export/dev/md/rdsk/d8
Ключ M нужен программе growfs для того, чтобы можно было увеличить размер смонтированной
Файл /etc/lvm/md.tab содержит таблицу метаустройств, которая служит файлом
С помощью growfs можно расширять только
/usr или корневой каталог или является активным разделом Кроме очевидных советов купить более
Дисковая активность (т.е. обращения к
Запись данных на
Приложение может вызвать функцию fsync() для принудительного сбрасывания данных из файлового кэша на
Вторая причина дисковой активности,
При частых и объемных операциях с файлами, файловый кэш быстро заполняет значительный объем
Демон fsflush руководствуется значением двух переменных, squid и tune_t_fsflushr, - значение им можно присвоить в файле /etc/system. Для систем с большим объемом squid в 30 с делает процесс fsflush чересчур дорогостоящим.
Для того чтобы поубавить аппетит fsflush, время цикла синхронизации следует увеличить, изменив в большую сторону значение squid. Поскольку fsflush оказывает влияние на всю систему, лучше всего, чтобы он работал в течение более коротких промежутков времени. Для этого значение tune_t_fsflushr (время, отведенное fsflush на синхронизацию) должно быть меньше: выделив демону меньшее число секунд, вы заставите его выполнять меньшую по объему запись.
Одной из проблем в системах, где происходит частая запись больших объемов данных в файлы на
Переменная ядра отвечает за включение механизма write throttling (приостановки записи в файл). Если эта переменная равна 1, то приостановка записи разрешена. По умолчанию это именно так.
Приостановка означает, что когда объем данных, ожидающих записи в один файл, превышает верхний предел , запись в этот файл блокируется до момента, пока объем данных в буфере не снизится до . Соответственно, пока запись в файл блокирована, пополнение буфера не осуществляется, зато данные из буфера записываются на
ufs_throttles. Его значение увеличивается на единицу при каждой приостановке записи, и постоянное увеличение этого значения говорит о том, что пределы и следует увеличить.
Такое увеличение вполне допустимо и даже полезно при использовании метаустройств с расщеплением (striping metadevices), когда данные одного файла поблочно пишутся на несколько устройств одновременно (первый блок - на первый и не должны быть слишком близкими, но и не должны очень сильно отличаться. Если они слишком близки, то приостановки записи будут случаться очень часто: как только объем буфера окажется у нижнего предела и запись будет разрешена, буфер сразу превысит верхний предел и запись приостановится. Большая разница между значениями приведет к тому, что запись в файл будет заблокирована при превышении верхнего предела, и после этого пройдет значительное время до разблокировки записи, так как буфер не может быть
мгновенно "сброшен" на
Рекомендуется нижний предел устанавливать равным 1/32 объема оперативной
Приостановка записи производится на пофайловой основе, т.е. блокировка записи в один файл, буфер которого заполнен более чем байтами, не влияет на запись в другие файлы.
Чтобы не искать номер индексного дескриптора по имени файла каждый раз, когда к файлу происходит обращение, система кэширует имена файлов и каталогов вместе с номерами их виртуальных
При открытии файла DNLC вычисляет соответствующий индексный дескриптор по имени этого файла. Если имя уже находится в кэше, то оно отыскивается очень быстро, поскольку не происходит сканирования каталогов на
Кэш имен каталогов не нуждается в maxusers. По умолчанию он определяется как (17x maxusers )+90 (в Solaris 2.5.1) или 4x( maxusers + max_nprocs )+320 (в Solaris 2.6 и выше). Другие параметры, на которые тоже оказывает влияние maxusers, обсуждены в лекции 10.
Команда
vmstat -s
показывает частоту успешных попаданий в DNLC с момента начала работы системы.
Если частота промахов велика (попаданий обычно не должно быть меньше 90%), следует подумать об увеличении размера DNLC. Проверим этот показатель работы системы командой
vmstat -s |grep 'name lookups' 422920 total name lookups (cache hits 99%)
Количество запросов к DNLC в секунду можно получить из поля namei/s в выводе команды sar -a:
sar -a 1 5 SunOS sunny 5.9 Generic_112234-03 i86pc 07/03/2004 19:26:50 iget/s namei/s dirbk/s 19:26:51 0 1 0 19:26:52 0 0 0 19:26:53 0 0 0 19:26:54 0 4 0 19:26:55 0 0 0
Как видно, система не очень-то загружена запросами к файлам и одыхает. А теперь запустим операцию, которая точно требует многократного обращения к DNLC:
find / -name "top" [1] 577 sar -a 1 5 SunOS sunny 5.9 Generic_112234-03 i86pc 07/03/2004 19:27:14 iget/s namei/s dirbk/s 19:27:15 1675 2592 1922 19:27:16 1220 2365 1474 19:27:17 968 1882 1172 19:27:18 1057 2107 1292 19:27:19 1231 2211 1443 vmstat -s |grep 'name lookups' 503370 total name lookups (cache hits 86%)
При интенсивных файловых операциях и доступе ко многим каталогам одновременно эффективность кэша имен каталогов снижается, но по-прежнему остается достаточно большой.
Как уже обсуждалось в лекциях 5 и 6, при создании
df -e Filesystem ifree /proc 862 /dev/dsk/c0t0d0s0 294838 fd 0 /dev/dsk/c0t0d0s4 246965 swap 9796 /dev/dsk/c1t0d0s0 3256077
Так как
Количество группируемых блоков равно параметру maxcontig . В версиях, предшествующих Solaris 8, этот параметр по умолчанию был равен семи, и, таким образом, операция ввода-вывода происходила одновременно с семью последовательными блоками и позволяла одновременно записать порцию данных размером 56 Kбайт. Такое значение по умолчанию связано с ограничениями конструкции в раннем оборудовании Sun: системы, основанные на архитектуре sun4, не способны передавать за одну операцию более 64 Kбайт. В архитектурах sun4c, sun4m, sun4d и sun4u таких ограничений нет. В Solaris 8 значение по умолчанию изменилось и составляет 16 блоков (128 Kбайт).
Изменение maxcontig может серьезно повлиять на maxcontig не принесет особой пользы.
maxcontig дает наилучший результат, если ее выполнить при создании
Чтобы оценить загрузку
iostat -x 5
в тот момент, когда интенсивность ввода-вывода будет наиболее близка к обычному (или пиковому, в зависимости от того, как вы хотите настроить
... device r/s w/s kr/s kw/s wait actv svc_t %w %b cmdk0 17.6 2.9 138.4 53.1 1.1 0.2 60.1 3 13 fd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 sd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 nfs1 0.0 0.0 0.0 0.0 0.0 0.0 9.3 0 0 extended device statistics device r/s w/s kr/s kw/s wait actv svc_t %w %b cmdk0 307.7 0.2 766.1 2.0 0.0 0.9 2.9 0 89 fd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 sd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 extended device statistics device r/s w/s kr/s kw/s wait actv svc_t %w %b cmdk0 253.4 0.7 768.0 6.0 0.0 0.9 3.6 0 88 fd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 sd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 ...
Средние значения загрузки можно получить из колонок kr/s и kw/s, в более ранних версиях системы для получения таких значений приходилось делить содержимое колонок "K/r" и "K/w" на "r/s" и "w/s" соответственно для получения средних показателей "прочитано килобайт в секунду" и "записано килобайт в секунду".
Для получения информации о распределении файлов по размеру можно использовать команду:
quot -c file_system
Например, вот каково распределение в моей тестовой системе:
quot -c /export/home ... 1128 1 165156 1136 1 166292 1160 1 167452 1176 1 168628 1184 1 169812 1192 1 171004 1224 1 172228 1232 1 173460 1240 1 174700 1264 1 175964 1360 1 177324 1376 1 178700 1440 1 180140 1488 1 181628 1536 1 183164 1608 1 184772 1648 1 186420 1704 1 188124 1768 1 189892 1792 1 191684 1832 1 193516 2047 40 437396 ...
Первая колонка вывода - это размер файла в блоках, вторая - число файлов такого размера, третья - общее число блоков, занятых файлами такого размера и меньшими.
Вопрос об установке в систему дополнительной оперативной
Если виртуальной
Индикаторами нехватки
При этом высокая активность может быть временной или постоянной. В любом случае, имеет смысл уяснить ее причину.
Повышенная частота сканирования страниц ( используйте команды
sar -g
или
vmstat
При анализе частоты сканирования с помощью vmstat имеет смысл запустить эту программу с параметром 60 для получения статистики каждые 60 секунд:
vmstat 60 kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr cd f0 s0 -- in sy cs us sy id 0 0 0 482100 7288 23 63 126 31 46 8 54 28 0 0 0 333 1519 327 5 11 84 0 1 0 470816 2060 0 26 1 51 103 0 123 240 0 0 0 960 969 649 4 92 4 ...
Первую строку (суммарную статистику) можно игнорировать. Если показатель page/sr остается выше 200 страниц в секунду в течение длительного времени, это говорит о вероятной нехватке оперативной
Постоянно низкое значение частоты сканирования страниц говорит о том, что системе хватает
Если устройство, на котором находится область iostat.
В Solaris 2.6 и выше следует использовать команду
iostat -xPnce
для получения информации об активности передачи данных в/из конкретных разделов
iostat -xc
которая позволяет получить статистику ввода-вывода только для целого
Если
Можно также использовать
sar -d
или
vmstat
Длинная очередь страниц для выгрузки свидетельствует о необходимости нарастить оперативную
В системах Solaris, начиная с версии 2.6, есть возможность выяснить, какие программы сколько
Для получения детальной информации дайте команду
/usr/proc/bin/pmap -x PID
Информация о размере процесса в оперативной
В пакете SunPro есть отладчик dbx, который помогает находить источник утечки
Статистику использования разделяемой
ipcs -mb
Эти программы следует использовать для определения размера процессов и основных потребителей
Размер области
Для управления пространством
Для выяснения общего объема виртуальной
Если /tmp как tmpfs, команда
df -k /tmp
покажет общий объем свободной виртуальной
В Solaris применяются оба широко известных типа обмена страницами между оперативной
physmem: общее количество страниц в оперативной
lotsfree: сканер страниц начинает работать, когда количество свободной оперативной lotsfree.
Значение по умолчанию - physmem/64, но оно может быть изменено в /etc/system. Сканер страниц по умолчанию запускается в режиме , столбик sr в выводе vmstat ) устанавливается равной slowscan , который по умолчанию равен fastscan/10.
minfree: пока объем свободной lotsfree и minfree, частота сканирования страниц растет линейно от slowscan к fastscan по мере уменьшения размера свободной minfree по умолчанию - desfree/2, значение fastscan по умолчанию - physmem/4. Если свободной desfree (что по умолчанию равно lotsfree/2 ), сканер страниц начинает запускаться с частотой 100 раз в секунду. За каждый свой запуск сканер страниц проверяет desscan страниц. Этот
maxpgio: этот
throttlefree: когда свободной оперативной throttlefree (по умолчанию этот minfree ), запросы процессов на выделение им новых страниц
cachefree: имеет значение для систем Solaris 7 (или систем 2.5.1 и 2.6 с установленными самыми свежими обновлениями); если в этих системах priority_paging установлен равным 1 (т.е. priority paging включен), то пока свободной lotsfree, освобождаются только страницы файлового кэша в lotsfree. Системы Solaris более поздних версий, начиная с 8-й, имеют другой алгоритм освобождения оперативной priority paging и устанавливать значение cachefree.
В системах Solaris до версии 7 включительно сканер страниц работает так: для выбранных сканером страниц обнуляется флаг "используемости" страницы, выбор страниц происходит со скоростью, которую можно посмотреть с помощью vmstat или sar -g (handspreadpages страниц сканер проверяет, установлен ли флаг "используемости". Фактически, сканер состоит из двух процессов, один из которых идет по handspreadpages по умолчанию равен physmem/4.
(рис 17.1) Зависимость частоты запуска сканера страниц от объема свободной памятиВ системах Solaris 8 и более новых алгоритм освобождения ). Он рассчитан на то, что при нехватке
В результате этих изменений в системах Solaris, начиная с версии 8, vmstat сообщает иные цифры, чем в той же ситуации в более старых системах, а именно:
Для получения отдельного отчета по
vmstat -p
Если системе в течение некоторого времени (обычно 30 секунд подряд) не хватает desfree ), то начинается maxslp секунд. По умолчанию maxslp равно 20. Этот режим
Если дело дошло до того, что desfree, и, кроме того, два и более процессов выстроились в очередь к процессору, а активность desfree.
Не выгружаются:
Значительный объем чтения и записи данных может вызвать нехватку
Для этого можно использовать функцию directio() или forcedirectio при монтировании discovered_direct_iosz (см. man vxtunefs ) (по умолчанию - 256 Kбайт).
Если в вашей discovered_direct_iosz.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.