Re: Solaris 10 Медленно работают жесткие диски диски.
- From
- Vitaly Filatov (2:5054/1.128)
- To
- Andrey Gusev
- Date
- 2007-02-16T23:17:50Z
- Area
- RU.UNIX.SOLARIS
From: Vitaly Filatov <vitaly@royint.com>
Andrey Gusev wrote:
> Приветствую, All
>
> Господа. Суть проблемы такая: сервер Sunfire 280R установлен solaris 10
> 6/06. Очень медленно работают диски ( FC-AL 10000rpm :( ) скорость около
> 2MB/sec. Хотя на офисном сервере с линух + ide около 47MB/sec.
> Подскажите плиз в чем может быть причина? а также возможные пути
> исправления. Процессор почти бездействует. Памяти свободной валом.
>
> Есть ли в солярисе аналог hdparm?
Часто путают "скорость работы дисков" (это десятки Мб/сек) или
"скорость работы файловой системы" (это сотни Мб/сек) со скоростью
ПОРОЖДЕНИЯ данных прикладной программой для записи на диск, при
сравнении работы этой программы на разных платформах.
Самый типичный случай.
Есть две вычислительные системы, на каждой из которых работает связка
программ типа поставщик-потребитель: один процесс порождает данные и
передаёт их другому процессу, который записывает их на диск.
Если на первой вычислительной системе данные передаются через
разделяемую память, а на второй - через сетевой уровень (даже без
выхода на сетевой драйвер), то небольшая задержка в программах сетевого
уровня приводит к тому, что данные будут записываться на диск не со
скоростью диска, а со скоростью работы программ сетевого уровня.
Это особенно заметно, если через сетевой уровень проходят короткие
порции данных в десятки и сотни байтов, а порождение данных идёт
практически мгновенно (например данные равны константе).
Если предположить, для примера, что данные порождаются порциями по 300
байт (очень простым алгоритмом, а следовательно бесконечно быстро) и
передаются через сетевой уровень, где имеется задержка (она абсолютно
незаметна при разнесении поставщика и потребителя на разные компьютеры)
и диск имеет бесконечную скорость работы, то если вы наблюдаете
скорость записи порождаемых данных на диск 2Мб/сек, то эта задержка в
пересчёте НА ОДНУ ОПЕРАЦИЮ имеет длительность всего-навсего:
(300 байт) / (2000000 байт/сек) = 0.15 миллисекунд = 150 микросекунд.
Это 500 лишних команд или какая нибудь функция nanosleep, которая
может использоваться в программах сетевого уровня и отсутствует при
передаче данных через разделяемую память.
Поэтому при сравнении скорости работы разных систем надо хорошо
представлять что сравнивается, как сконфигурирована прикладная
программа на каждой из систем.
Скорость работы дисков лучше всего смотреть по результатам работы
команды dd, копируя партицию одного диска на партицию другого диска в
обход файловой системы (надеюсь вы понимаете, что при этом скорость
записи на диск определяется скоростью чтения данных с диска и если
копируете с медленного диска на быстрый диск, то получите результат
медленного диска).
Если при работе прикладной программы наблюдаются другие результаты в
сравнении с результатами выполнения команды dd, особенно такие
абсурдные как 2Мб/сек - чего быть не может (даже на непатченной системе,
но конечно лучше пропатчить и сравнить), то это означает, что
прикладная программа сконфигурирована неверно или в ней всё так и
задумано.
Виталий Филатов
--- FIDOGATE 5.1.3ds
* Origin: MTU-Intel ISP (2:5054/1.128)
SEEN-BY: 5020/545 5054/1 4 8 9 28 35 37
PATH: 5054/1 37