Ограничение по процессорной мощности, не так просто, как кажется. Существует несколько способов ограничить потребление процессора:
- Планировщик долевого распределения (FSS)
- Пулы ресурсов
- Зонные ограничения
Тестовый стенд: Solaris 11
Ограничение по процессорной мощности, не так просто, как кажется. Существует несколько способов ограничить потребление процессора:
Тестовый стенд: Solaris 11
Что бы зона не смогла подвесить весь сервер, нужно её ограничивать по ресурсам. Обычно ограничивают использование оперативной памяти и процессорной мощности. Разберём как правильно ограничить использование памяти для зоны
Тестовый стенд: Solaris 11, zonename – zone0
Как защитить файл от удаления из-под root’a? Ведь root может удалить любой файл? Или не любой? Оказывается, и здесь есть небольшая защита от дурака.
Создатели файловых систем позаботились о том, что бы добавить возможность выставить дополнительные флаги на файлы или папки, которые бы ввели дополнительную защиту:
– нельзя удалить файл (неважно под каким пользователем это делать)
– можно только дописывать/добавлять, но не изменять или удалять
а так же много других возможностей. Напомню, что это свойство файловой системы, а не ОС, поэтому, не для всех ОС эти свойства применимы
Компиляцию в Solaris можно делать многими способами, но я расскажу о 2-х, на мой взгляд, популярных: SunStudio и gcc.
В базовой поставке эти компоненты отсутствуют, поэтому их придётся ставить отдельно. Но для обеих компонентов будут нужны header’ы и их тоже нужно будет поставить:
#pkg install system/header
Иначе будет ругаться
fatal error: string.h: No such file or directory
Напомню, что в Solaris include-файлы лежат в /usr/include.
Кстати, под Solaris лучше использовать именно SunStudio, а не gcc, так как у первого лучше оптимизация под Solaris.
Solaris brand zone – это механизм, который позволяет запускать внутри зоны другие ОС а так же их различные версии. Данная возможность появилась в Solaris 11 и она позволяет запускать Solaris10 и Linux внутри зоны Solaris11.
И так, рассмотрим пример переноса зоны из Solaris10 в Solaris11.
Если появилась задача измерять скорость работы между 2-мя хостами, то лучшего инструмента, чем iperf/ttcp не найти.
Оба этих инструмента нужно запускать с обеих концов проверяемой трассы.
Утилита nice запускает программу, заданную аргументом программа, с
изменённым приоритетом планирования, увеличивая eё значение “nice” на
указанное приращение. Если приращение не указано явно, оно полагается
равным 10. Чем меньше значение nice у процесса, тем более высокий прио-
ритет он имеет.
Суперпользователь может также указать отрицательное приращение, чтобы
запустить программу с более высоким приоритетом.
Есть замечательная статья http://habrahabr.ru/post/92701/ и в ней описаны моменты, о которых многие наверное и не слышали. Это касается контроля ошибок чтения/записи. Не буду пересказывать статью, а лишь добавлю от себя некоторые моменты:
– SCT параметры можно выставить не на всех диска, даже если они “крутые” или Raid edition и даже если smart сказал вам, что поддерживается.
– Всегда выставляйте таймаут (если диск позволяет) чтения/записи (лучше пускай диск выпадет из raid’a, чем подвиснет сервер). Особенно это касается zfs
– Если smartctl ругается INVALID ARGUMENT TO -l то просто обновите версию smartctl хотя бы до 5.40
Я был свидетелем того, как из-за не установленных таймаутов, подвисали процессы, которые не убивались через kill -9.
Данные примеры работают не только на Solaris, но и на FreeBSD
Загрузка ЦПУ приложениями (можно использовать оба варианта)
dtrace -n 'syscall:::entry { @num[execname] = count(); }'
dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }'
Статистика системных вызовов (syscalls)
dtrace -n 'syscall:::entry { @num[probefunc] = count(); }'
В Solaris очень много разных инструментов, которые предназначены на все случаи жизни. Вот ещё один – lastcomm, команда которая хранит историю всех команд всех пользователей. По умолчанию логгирование отключено. При первом запуске получим:
#lastcomm
/var/adm/pacct: No such file or directory
Что бы включить логгирование команд, выполним
#/usr/lib/acct/turnacct on
После этого введём пару команд и посмотрим lastcomm
$ lastcomm
man skeletor pts/3 0.00 secs Tue May 8 20:19
less skeletor pts/3 0.00 secs Tue May 8 20:19
sendmail SF root __ 0.00 secs Tue May 8 20:21
sendmail F smmsp __ 0.00 secs Tue May 8 20:19
mv skeletor pts/3 0.00 secs Tue May 8 20:19