Анализ производительности 1С: размещение временных файлов в оперативной памяти

В одной из предыдущих статей обсуждалась проблема несбалансированности клиента и сервера. В частности, обсуждалось наличие у клиентских систем такого слабого места как жесткий диск, который, как правило, является достаточно медленным.

Материал опубликован на сайте SoftPoint.Ru/

В одной из предыдущих статей обсуждалась проблема несбалансированности клиента и сервера. В частности, обсуждалось наличие у клиентских систем такого слабого места как жесткий диск, который, как правило, является достаточно медленным.

Антон Гусев

Но, если используется нормальный современный жесткий диск со скоростью вращения 7200 об/мин, то возникает вопрос: является ли нормальный быстрый жесткий диск узким местом или нет? Напомню, что в контексте предыдущей статьи мы знаем, что 1С записывает данные временного расчета регистров во временные пары файлов *.DBF + *.CDX. Наша задача – выяснить, будет ли разница, если вместо быстрого современного жесткого диска использовать диск в оперативной памяти, и, тем самым, полностью исключить операции с жестким диском. Тестом будет являться перепроведение документов за период.

У 1С-Предприятия есть ключ командной строки «/T», позволяющий назначить путь для хранения временных файлов. Существует ряд программ, позволяющих организовать диск в оперативной памяти компьютера. Для данного теста временный диск в оперативной памяти организовывался с помощью программы «Ram-Disk 2000 server Trial», имеющей 30-дневный срок, в течение которого можно программу тестировать без покупки.

Для тестирования проведения документов будет использоваться обработка восстановления последовательности. Последовательность будет восстанавливаться за период с 1 марта 2004 года по точку актуальности. Таким образом, будут перепроведены документы за два с лишним месяца.

Теперь рассмотрим подробно тестовую конфигурацию. Тесты проходили в отдельной тестовой базе, в которой в разделенном режиме работал только один тестовый экземпляр 1С-предприятия. Тестовая база находилась на рабочем сервере с большим количеством рабочих баз, являющимся также сервером терминалов. Тестовая база – работала в режиме SQL. Объем базы – 1 гигабайт. Компонента – оперативный учет. ОС сервера: Windows 2000 Advanced Server EN sp2.

Клиент – П4-2.53Ггц, 512 ОЗУ. Жесткий диск : IBM-DTLA-307045, скоростью 7200 об/мин. Как видно, жесткий диск быстрый, но не самой последней модели (модельный ряд 2000 – 2001 года). ОС клиента: Windows 2000 server RUS sp4.

Диск в оперативной памяти был размером 10 мегабайт, файловая система – NTFS.

Тесты проводились в рабочее время, все 5 пар замеров сразу, один за другим попарно. Открывалась 1С, запускался тест, выводилось результирующее время работы, последовательность возвращалась назад, на начальную дату и 1С закрывалась. Запуски проходили последовательно по парам (если читать таблицу сначала по строчкам слева направо).

№ п/п Время проведения документов, сек.
Файлы в памяти Файлы на диске
1 950 851
2 844 876
3 824 906
4 843 993
5 858 1051
Среднее значение: 863 935

В результате среднее время восстановления последовательности при использовании диска в оперативной памяти – на 7,7% меньше, чем при работе с физическим диском.

Какие отсюда можно сделать выводы? Прирост производительности есть, но он мал. Значит для компьютеров с более или менее быстрыми дисками жесткий диск не является узким местом. И действительно, если посмотреть такие характеристики, как скорость случайной записи и случайного чтения для современных дисках – они достигают величин более 10 Мбайт в секунду (а ведь это самый «жесткий» режим работы жесткого диска). Для последовательного доступа к данным на чтения или запись показатели стремятся к цифре 100 Мбайт в секунду. Реальные значения порядка 50-60. С учетом стандартного кэширования диска сбалансированная производительность современного жесткого диска будет значительно выше чем 9 Мбайт/сек (средняя производительность 100-мегабитной сети).

Теперь рассмотрим порядок выполнения запроса и обозначим время работы:

  1. Запрос на сервер (несущественно).
  2. Выполнение запроса на сервере (существенно).
  3. Передача результата на клиент (существенно).
  4. Обработка на клиенте (существенно).
  5. Запросы на проведение (несущественно).
  6. Проведение на сервере (существенно).

      Теперь, посчитаем существенные части – их четыре, и одна из них (обработка на клиенте) – это как раз и есть работа жесткого диска плюс всевозможные вычисления в модуле проведения. Если условно посчитать все части равными (что будет очень грубым приближением), то, если мы избавляемся от одной из частей, то мы экономим время, равное длительности работы этой части.

      Лично я бы отсортировал по убыванию важности (читай затрат ресурсов) так:

      1. Выполнение запроса на сервере.
      2. Передача результата по сети на клиент.
      3. Обработка на клиенте.
      4. Проведение на сервере.

Отсюда мораль: не удастся избавлением от одного отрезка работы (при условии что он не является действительно узким местом) получить прирост производительности в разы, только на проценты!

Обратная мораль: если участок является узким местом – то производительность системы в результате его расширения возрастает в разы!

Начать дискуссию