Европейский Университет в Санкт-Петербурге
Опубликован: 19.10.2005 | Доступ: свободный | Студентов: 1763 / 169 | Оценка: 4.31 / 3.82 | Длительность: 18:28:00
Лекция 7:

Настройка производительности системы

Индексные дескрипторы

Как уже обсуждалось в лекциях 5 и 6, при создании файловой системы для индексных дескрипторов выделяется отдельное пространство на разделе. Индексные дескрипторы хранят свойства файла, в том числе теневые индексные дескрипторы - расширенные права доступа. Количество индексных дескрипторов - это неизменяемая величина. Отсутствие свободных индексных дескрипторов в файловой системе приводит к невозможности записывать файлы в те каталоги, которые расположены в этой файловой системе. Количество свободных индексных дескрипторов можно определить, проанализировав вывод команды df -e:

df -e
Filesystem					ifree
/proc							862
/dev/dsk/c0t0d0s0 		294838
fd 							0
/dev/dsk/c0t0d0s4		246965
swap 							9796
/dev/dsk/c1t0d0s0 		3256077

Количество одновременно записываемых блоков

Так как размер кластера файловой системы, как правило, составляет 8 Кбайт, драйвер файловой системы при записи собирает данные в блоки по 8 Кбайт для большей эффективности использования дискового пространства. При записи файлов значительных размеров драйвер файловой системы группирует несколько блоков для того, чтобы вместо серии мелких операций ввода-вывода выполнить одну большую по объему операцию.

Количество группируемых блоков равно параметру файловой системы maxcontig . В версиях, предшествующих Solaris 8, этот параметр по умолчанию был равен семи, и, таким образом, операция ввода-вывода происходила одновременно с семью последовательными блоками и позволяла одновременно записать порцию данных размером 56 Kбайт. Такое значение по умолчанию связано с ограничениями конструкции в раннем оборудовании Sun: системы, основанные на архитектуре sun4, не способны передавать за одну операцию более 64 Kбайт. В архитектурах sun4c, sun4m, sun4d и sun4u таких ограничений нет. В Solaris 8 значение по умолчанию изменилось и составляет 16 блоков (128 Kбайт).

Изменение параметра maxcontig может серьезно повлиять на производительность файловой системы , при работе с которой преобладают последовательные операции по записи средних и больших (более нескольких десятков килобайт) файлов на диск. Если при доступе к файловой системе большинство операций ввода-вывода совершается с данными малого размера, то изменение maxcontig не принесет особой пользы.

Размер кластера файловой системы задается с помощью ключа -С blocks команды newfs при создании файловой системы. Для существующей файловой системы его можно изменить с помощью ключа -a команды tunefs.

Настройка 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
...

Первая колонка вывода - это размер файла в блоках, вторая - число файлов такого размера, третья - общее число блоков, занятых файлами такого размера и меньшими.