Как ускорить файловую систему

Обновлено: 03.07.2024

Долго гадал, почему из трех практически идентичных компьютеров Core I7 одного и того же поколения 1С на двух работает быстро, а на третьем существенно медленнее.

Так как там серверная БД, пришлось серьезно вникать в анализ производительности БД, купил даже курс
"Ускорение и оптимизация систем на 1С:Предприятие 8.3" и кстати не сочтите за рекламу - очень доволен остался. Парни просто профи в вопросе и умении излагать материал.
По советам из этого курса внедрил подсистему, фиксирующую время выполнения операций и стал изучать на 3х секундном процессе открытия определенной формы сколько тратится на запрос БД /процессорную обработку / Передачу данных на клиент.

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

Конечно же, поменял сервера местами, снова измерил время работы и выяснил что одинаковые сервера с чрезвычайно похожими сетапами дают разное время открытия формы. Хоть тресни.

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

А я говорит, в одном сервере на днях в настройках электропитания поставил режим "Высокой производительности". Ну или в дополнительных параметрах питания, нашел раздел "Управление питанием процессора" - "Минимальное состояние процессора" - и поставил настройку 100%



Каково же было мое удивление, когда я замерил скорость открытия формы.


Ускорение и оптимизация систем на 1С:Предприятие 8.3

Я думаю, пояснять этот график не надо.

Конечно, грамотный айтишник скажет, что еще в БИОС надо выставлять максимальную производительность процессора, что бы в Windows уже не требовалось за этим следить. Но для сервера лезть в БИОС это целая история, причем ночная. А изменить сделать предложенную настройку настолько просто и очевидно - что стало стыдно за то, что потребовалось так много лет, что бы дойти до этой простой истины.

Ну и на всякий случай перечислю другие рекомендации, что записал для себя как обязательные..

- Использование скоростного SSD (можно SATA3, можно M.2)

- Запас оперативной памяти

- Windows тоже ставить на SSD или же обязательно переносить на SSD диск
- файл подкачки
- КЭШ сервера 1С (в реестре отредактировать команду запуска сервера)
- Терминальных пользователей вынес в отдельную виртуальную машину (тоже на SSD)
- Если используем решения на "обычных формах" - то никакой PostgreSQL - только MS SQL (Реагирую на гневный комментарий. - дело, конечно не в формах, а в технологии запросов, которые применялись в старых конфигурациях, когда допускалось соединение виртуальных таблиц без их предварительной записи во временную таблицу).

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


Когда весь интернет пестрит холиварами на тему «SSD ненадежны» и «SSD настолько быстрые, что я больше никогда не буду работать с HDD», думаю самое время внести немного ясности в то море противоречевой информации о самих SSD и о настройке Windows для работы с ними.

Кто заинтересовался, прошу под кат.


Вот я и стал счастливым обладателем этого чуда современной техники: OCZ Vertex 3 120 Gb. Сначала я загрузился в старой системе и обновил прошивку SSD, т.к. программа прошивки от OCZ не позволяет обновлять прошивку, когда диск является системным. Думаю, обновление прошивки – это первое, что нужно сделать после приобретения SSD, т.к. как показывает практика, ошибок в микропрограммах предостаточно, особенно в новых моделях SSD (по сравнению с которыми Vertex 3 уже и не самый новый :) ).
Далее я решил поставить на SSD чистую систему. Установка Windows 7 с флешки (USB 2.0) заняла где-то минут 10. Вау, подумал я, раньше установка некоторых тяжелых программ шла гораздо дольше, не говоря уж об операционной системе!

С этого момента можно было просто начать пользоваться супер быстрым диском и радоваться жизни, но меня не покидало параноидальное чувство, что мой SSD быстро сломается из-за частых перезаписей. Действительно, ограниченное количество циклов перезаписи SSD – это пока еще не миф. Но все уже знают, что даже ресурс в 10000 перезаписей – это очень и очень много при объеме диска в 120 Gb. В зависимости от контроллера SSD также может применять различные внутренние технологии выравнивания износа, релокации данных из одного места в другое, сжатия записываемых данных (актуально для контроллеров SandForce) – диск старается изо всех сил, чтобы работать быстро и долго :) Как либо повлиять на эту внутреннюю логику практически невозможно (разве что обновлением прошивки), поэтому при выборе SSD под какие-то особые задачи нужно искать информацию по логике работы его контроллера.

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

1) Перенос каталога для временных файлов на обычный (HDD) диск

Пути к каталогам TEMP находятся тут:
Компьютер – Свойства – Дополнительные параметры системы – вкладка Дополнительно – Переменные среды – TMP и TEMP (для текущего пользователя и общие).

Кто-то советует переносить Temp на RAMDisk, но это скорее вредный совет. Связано это с тем, что некоторые программы (в т.ч. апдейты) пишут данные во временный каталог, затем отправляют компьютер в ребут, а затем ожидают, что данные никуда не делись за это время. А RAMDisk по умолчанию очищается при перезагрузке. Но даже если ваш RAMDisk поддерживает сохранение данных в образ и восстановление после перезагрузки, это тоже не панацея, т.к. возможна ситуация, при которой служба RAMDisk'а просто не успеет запуститься и проинициализироваться к тому моменту, как программы начнут обращаться к временному каталогу.

2) Отключение гибернации

Это довольно странный совет. С одной стороны, отключение гибернации позволяет избавиться от файла hiberfil.sys, размер которого равен объему оперативной памяти, а место на SSD нам особенно дорого. Также при каждой гибернации на SSD пишется относительно большой объем данных, что «ведет к износу и бла-бла-бла-бла»… Апологеты данного совета пишут мол «зачем вам гибернация, ведь с SSD система и так стартует за несколько секунд». Но лично мне гибернация нужна не ради быстрого старта, а чтобы не закрывать (и не открывать потом заново) чертову кучу приложений, которыми я постоянно пользуюсь, так что целесообразность отключения гибернации находится под большим вопросом.
Я с радостью переместил бы файл hiberfil.sys на другой диск (на HDD), но в силу системных ограничений сделать это невозможно.

3) Отключение защиты системы.

Компьютер – Свойства – Защита системы – вкладка Защита системы – Настроить – Отключить защиту системы.
Сделать это можно, если вы пользуетесь хоть какими-то другими средствами резервного копирования системы. В противном случае есть большой риск получить нерабочую систему в случае каких-то сбоев.

4) Отключение файла подкачки.

Этот совет вызывает самые бурные споры и даже от Microsoft не удалось добиться внятных разъяснений.
Я считаю данный совет вредным и рекомендую переносить файл подкачки на обычный (HDD) диск (но ни в коем случае не на RAMDisk :), почему, даже пояснять не буду – эту информацию легко найти в сети).
Полностью отключать файл подкачки вредно со следующей точки зрения. Некоторые «шибко умные» программы (например, MS SQL Server) резервируют себе виртуальное адресное пространство в очень больших количествах (про запас). Зарезервированная память не показывается в диспетчере задач, ее можно увидеть например в Process Explorer, включив отображение колонки «Process Memory – Virtual Size». При наличии файла подкачки система резервирует память в нем (т.е. некий диапазон объявляется недоступным для использования другими приложениями). При отсутствии файла подкачки резервирование происходит непосредственно в оперативной памяти. Если кто-то сможет прояснить в комментариях (со ссылками на достоверные источники), как именно это влияет на работу других программ и производительность, буду очень благодарен.

5) Отключение Prefetch, ReadyBoot, и Superfetch.

5.1. Prefetch – это технология ускорения загрузки системы и приложений за счет упреждающего чтения данных с диска. Она актуальна только для медленных носителей. Поскольку с Random reads у SSD все в порядке, Prefetch можно безболезненно отключать.
Служебные данные Prefetcher хранит в C:\Windows\Prefetch.
Для отключения Prefetch нужно изменить на 0 значение параметра Enable Prefetcher в ключе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters.

5.2 ReadyBoot (не путать с ReadyBoost) – это дополнение к Prefetch, которое логгирует процесс загрузки для определения порядка и состава требуемых при загрузке данных и на основе этих логов подготавливает требуемые данные для ускорения процесса загрузки.
Сами логи лежат в C:\Windows\Prefetch\ReadyBoot. Отключение Prefetcher'а не приводит к остановке записи этих логов. Для остановки логгирования необходимо установить в 0 параметр Start ключа HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\ReadyBoot
Отключение ReadyBoot в целом является относительно бесполезным советом, т.к. никакого прироста по скорости это не даст, разве чуть-чуть сократит записи на диск, т.к. не будут вестись логи загрузки (которые довольно маленькие, порядка нескольких мегабайт).

5.3 Superfetch – это технология предзагрузки часто исполняемых программ в оперативную память. Отключать его не имеет смысла, т.к. Superfetch не приводит к записи на диск.

6) Отключение индексации

В свойствах диска можно убрать галку «Разрешить индексировать содержимое файлов на этом диске в дополнение к свойствам файлов». Это может снизить размер индексов, которые строит индексатор Windows, т.е. снизить нагрузку по записи на SSD.
Сами индексы лежат в C:\ProgramData\Microsoft\Search
Также можно полноcтью отключить индексатор, отключив службу Windows Search.

7) Перенос кэшей приложений на RAMDisk.

Под приложениями здесь имеются в виду в основном браузеры, т.к. именно они активно используют кэш посещенных страниц. Переносить этот кэш на HDD было бы довольно глупо, т.к. нам же нужно ускорение! А поэтому вполне хорошим решением является вынесение этих кэшей на небольшой (например, 1 Гб) RAMDisk (лично я использую AMD Radeon RAMDisk, правда несмотря на громкое название это продукт фирмы Dataram).
У каждого браузера свой способ указания местоположения кэша, эту информацию легко найти в сети.

8) Отключение usn журнала файловой системы NTFS.

Один из спорных и противоречивых советов. С одной стороны, у меня не получилось отключить usn журнал для системного раздела. Также usn журнал используется некоторыми программами (напр., Everything) для отслеживания измененных файлов. Если кто-то может прокомментировать ситуацию насчет полезности отключения usn, буду очень благодарен.

UPD 9) Отключение дефрагментации диска

Windows 7 должна сама отключать дефрагментацию для SSD-дисков, поэтому ничего настраивать руками не нужно.

Выводы:
1. Даже если не прибегать ни к каким советам по конфигурированию системы для работы с SSD, Windows 7 будет работать на SSD чуть менее чем превосходно.
2. Некоторые советы позволят вам снизить количество записей на SSD-диск, что может продлить и без того относительно долгий срок его работы.
3. Многие советы позволят вам изменить некоторые параметры, не убив при этом производительность системы, но и не давая никакой практической пользы :)

Другие идеи и советы крайне приветствуются! Надеюсь, вместе мы сможет разграничить их на полезные и вредные :)

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

  • быстрая работа пользователя с базой по сети в монопольном режиме и крайне медленная - при одновременной работе нескольких пользователей
  • быстрая работа пользователя с локальной базой на сервере и медленная - по сети
  • процессор на сервере почти не занят
  • загрузка гигабитной сетевой карты меньше 5%
  • обращения к файловой системе чуть менее 10 мбайт/сек

Итак, мне досталась задача - сделать так, чтобы в 1С могли одновременно работать целых три пользователя! Смешно, не так ли?

Все шуточки я забыл, когда увидел, с чем предстоит иметь дело: "сервер" в лице обычного офисного компьютера и два ноутбука.

Счастье было бы неполным, если бы не замечательные операционные системы - на компьютере и на одном ноутбуке Windows 7, на другом - Windows 8.

При попытке одновременно провести документы на ноутбуках один тупил около минуты, а второй вылетел из 1С с текстом ошибки "не удалось заблокировать таблицу. ".

Запуск 1С на ноутбуке - это отдельное шоу, длившееся порядка 3 минут!

На многих ресурсах сталкивался с советом перейти на работу в терминальном доступе. К сожалению, Windows 7 не позволяет штатными средствами превратиться в сервер терминалов - максимум одно активное подключение. При этом остальные сеансы не прекращаются, можно переподключиться под другим пользователем - "выкинув" при этом предыдущего пользователя, но не завершив его сеанс. Поэтому следует перенести 1С на серверную ОС, где таких ограничений нет. Клиент на свой страх и риск решил проблему вместо этого с помощью сторонней утилиты Windows7_SP1_RDPhack.

Но на этом приключения не закончились. Даже в терминальном подключении остались значительные тормоза. Вновь меня выручили всемогущие поисковики. Ниже даны советы по ускорению файловой 1С, которым я последовал:

1. Отключить использование протокола сети IPv6, настроить адресацию на "старом" IPv4.

2. Добавить процессы 1С в исключения брандмауэра Windows, а также в исключения антивируса, либо отключить их вовсе (более рискованно, но простой тест показал увеличение скорости перепроведения документов при отключенном антивирусе Avast в разы!)

3. Запустить индексацию полнотекстового поиска в 1С либо выключить его вовсе

4. Запустить Тестирование и исправление базы, проверку утилитой ChDbfl

5. Запустить в конфигурации пункт Проверка конфигурации (если конфигурация не типовая, это может быть полезным). По результатам проверки конфигурации она волшебным образом уменьшилась в размерах почти на треть. Что уж и как до меня обновляли приходящие программисты - особо не вникал, но факт налицо.

6. Отключить ненужные функциональные опции.

7. Настроить права пользователям. (Этот и предыдущий советы показались глупостью, до тех пор, пока я не понаблюдал за отрисовкой управляемых форм при открытии списка документов. Чем меньше лишнего в управляемом интерфейсе - тем , как правило, быстрее он работает)

8. Запустить пересчет итогов и восстановление последовательности (значительный прирост может быть только в случае, если долгое время итоги не восстанавливались)

9. Указать "Скорость соединения - низкая" в настройках списка баз (это особого результата не дало, разве что отключились картинки у подсистем :))

После выполнения всех этих шагов файловая база 1С заработала на порядок шустрее. Запускаться стала максимум секунд за 10, а скорость перепроведения документов увеличилась в среднем в 12 раз.

Возможно, эта небольшая статья пригодится и вам, если вдруг понадобится ускорить файловую базу 1С.

P.S: А запустить файловую 1С, используя сетевой доступ к общей папке - все же нереально, т.к. даше самый шустрый твердотельный диск, оперативная память и процессор уткнутся в сетевые блокировки, и работа более одного пользователя будет фактически невозможна. Речь идет конкретно о конфигурации УТ 11.1. Самописные небольшие конфигурации вполне могут работать весьма быстро даже в файловом варианте.

Дополнения из комментариев к публикации:

Дефрагментация диска с файловой базой

Свертка базы (может оказаться полезной, если база большого объема, например, за несколько лет). У клиента база была достаточно молодая, поэтому свертка была нецелесообразна.

Модернизация аппаратной части - более быстрый винчестер, новый свитч, процессор, и т.д.

Установить на веб-сервер, доступ с помощью тонкого клиента. Тут мнения разделились. Кто-то говорит, в разы быстрее, кто-то - что ускорения не отмечено.

По умолчанию ntfs создает файл с именем формата 8.3 каждый раз при создании обычного («длинного») названия, что все же несколько увеличивает время создания файлов. Чтобы избавиться от этого, можно запретить короткие имена командой fsutil:

Для достижения требуемого эффекта достаточно перезагрузить машину. Несколько предостережений:
В большинстве случаев при использовании этой методики вы почувствуете разницу лишь на жестких дисках, где хранится очень много (300.000 и более) файлов в относительно небольшом количестве папок и где множество файлов имеет похожее начало («Улучшение производительности ntfs часть 1.doc», «Улучшение производительности ntfs часть 2.doc» и т.д.) При этом у вас будет много файлов, которые начинаются одними и теми же символами и располагаются в одной и той же папке, а ntfs придется тратить больше времени на создание уникальных 8.3-названий для них. При этом многие старые приложения и даже старые версии microsoft office при отключенных 8.3-именах могут работать некорректно. Так что перед массовым отключением коротких названий проверьте работоспособность важных для вас приложений на тестовом разделе.

2. Называйте файлы соответственно

Пусть вы не можете полностью отключить короткие имена файлов (например, из-за наличия старого ПО, отказывающегося при этом работать). В таком случае можно улучшить производительность ntfs, выбрав более подходящую схему именования файлов — при этом различия в похожих названиях файлов должны находиться ближе к началу названия. К примеру, вместо названий типа "Улучшение производительности ntfs часть 1.doc" лучше называть файлы вот так: "1 часть — Улучшение производительности ntfs.doc". В таком случае ntfs не придется долго думать над присваиванием уникального 8.3-имени каждому файлу в папке.

3. Используйте больше папок

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

4. Используйте больше разделов

В windows 2000, если вы разбиваете большой диск (объемом 50 Гб и выше, к примеру) на несколько более мелких ntfs-разделов (по 10 Гб каждый), вы можете добиться в идеале 10-процентного увеличения производительности. ntfs в windows xp усовершенствована и работает в целом лучше, но на пару- тройку процентов прироста производительности при разбиении большого диска на маленькие разделы вы все равно можете рассчитывать.

5. Планируйте размер кластера

Размер кластера на ntfs-разделах по умолчанию 4 Кб и отлично вам подходит, если файлы сравнительно небольшие, и их размер сильно не меняется. Но если ваши файлы имеют гораздо больший объем или быстро растут, попробуйте увеличить размер кластера до 16 или 32 Кб. Это позволит уменьшить объем «потерянного» пространства и открывать файлы немного быстрее. Однако есть два замечания. Если вы собираетесь сжимать файлы при помощи ntfs- компрессии, вам придется оставить размер кластера равным 4 Кб. Кроме того, чем меньше ваши файлы по сравнению с размером кластера, тем сильнее будет подвержен фрагментации раздел. Следовательно.

6. Регулярно проводите дефрагментацию

Фрагментация данных на диске приводит к увеличению времени, затрачиваемого приложениями на открытие, закрытие, создание или удаление файлов. Хороший вариант — как минимум еженедельный запуск Дефрагментатора Дисков (disk defragmenter) в windows xp, особенно если вы используете приложения, которые часто модифицируют файлы, и этих самых файлов у вас много. При желании можно использовать планировщик задач windows для автоматизации процесса.

7. Сохраните место для mft

Работа с master file table (mft) ntfs в windows xp осуществляется быстрее, чем в windows 2000, за счет того, что некоторые файлы метаданных mft размещаются не в начале диска. Уже одно это усовершенствование позволяет ntfs в windows xp «обгонять» ntfs windows 2000 на 10% (максимум). Однако и в xp производительность можно чуть увеличить, обеспечив достаточно свободного места для «роста» mtf. Это предотвратит фрагментирование mft, что особенно важно: стандартный Дефрагментатор Дисков (disk defragmenter) не умеет дефрагментировать mft. По умолчанию windows xp резервирует 12,5% от объема каждого ntfs-раздела для «зоны mft», которая предназначена исключительно для размещения mft. Поэтому, если вы планируете хранить множество небольших (до 8 Кб, например) файлов на разделе, свободное место в mft (где, напомню, небольшие файлы хранятся целиком) может закончиться еще до того, как закончится место на разделе, и результатом будет фрагментация mft. Чтобы предотвратить неприятность, можно зарезервировать дополнительное дисковое пространство под mft командой fsutil:

Это удвоит размер зарезервированной mft зоны до 25% от общего объема раздела. Разумеется, при этом вы потеряете 12,5% свободного места, предназначенного для самих файлов — с этим нужно считаться, используя данную возможность. Вы можете использовать mftzone 3, чтобы
зарезервировать 37,5% для mft или даже mftzone 4 — для отведения под mft половины свободного пространства на диске. Однако, напомню, эти «экстремальные» настройки будут полезны лишь в тех случаях, когда вы храните на разделе огромное количество файлов малого размера (примерно до 1 Кб). Чтобы установить желаемый размер зоны mft, сделайте следующее. Запустите команду fsutil, как описано выше. Перезагрузите систему. Создайте требуемые разделы. Для возврата к обычному правилу резервирования (12,5% от объема каждого раздела) используйте команду fsutil behavior set mftzone 1.

8. Запретите атрибут Время последнего обращения

По умолчанию у каждого файла и папки на ntfs-разделе имеется атрибут Время последнего обращения, который хранит информацию о том, когда в последний раз файл (или папка) был открыт, прочитан или изменен. Это означает, что даже когда вы читаете файл с ntfs-раздела, на нем параллельно происходит и запись. В большинстве случаев это не является проблемой, но если вы пользуетесь приложениями, часто открывающими файлы на короткие промежутки времени, эта особенность ntfs может сильно понизить общую производительность. К счастью, можно использовать fsutil для отключения обновления данного параметра:

После запуска этой команды Время последнего обращения для вновь созданных файлов будет равно просто-напросто времени их создания. Необходимо отметить, однако, что запрет обновления данного параметра может негативно повлиять на работу программ по резервному копированию данных, использующих службу удаленного хранения (remote storage service).

9. Включите (или выключите) Службу Индексирования

Включать или выключать Службу Индексирования в windows xp, зависит от ваших нужд. Если вы пользуетесь поиском по диску редко, лучше, пожалуй, ее и не включать, так как она незначительно замедляет работу ntfs и требует дисковое пространство для хранения каталога. Но если вы часто используете поиск (а также ищете в содержимом файлов), то включайте Индексирование — это заметно ускорит процесс поиска.

10. Используйте fat32 для файла подкачки

И, наконец, если у вас в машине имеется второй физический диск, вы можете поднять производительность переносом файла подкачки (pagefile.sys) на этот второй диск. Чтобы это сработало в лучшем виде, проделайте следующее. Создайте раздел на втором диске, удостоверившись, что его объема хватит для файла подкачки (ориентируйтесь на размер, равный утроенному количеству оперативной памяти — его будет более чем достаточно). Отформатируйте свежесозданный раздел в fat32, так как fat32 по скорости чтения немного превосходит ntfs на небольших разделах. При этом не создавайте дополнительных разделов на втором диске — оставьте его исключительно для использования файлом подкачки. Другими словами, наша последняя хитрость для улучшения производительности ntfs заключается в том, чтобы не использовать ntfs на разделе с файлом подкачки.

Автор: Митч Таллоч
Перевод: Николай «nickky» Щетько
Источник: компьютерная газета


Оцените статью: Голосов

Читайте также: