13

По моим наблюдениям как разработчика Java, работающего на рабочих станциях Windows, NTFS медленна по сравнению с файловыми системами Linux. Вопрос в том, есть ли что-нибудь в драйвере NTFS, которое можно настроить вручную, например, дать ему больше памяти для кеша? Включить некоторые экспериментальные алгоритмы? Если это не доступно, возможно, есть другая файловая система, которая может использоваться в Windows, может быть, даже коммерческая, это быстрее, чем NTFS?

Чтобы быть ясным, я не стремлюсь улучшить скорость компиляции для проектов Maven, я хотел бы получить общее улучшение для ОС. У меня такое ощущение, что NTFS давно устарела и медленна по сравнению с файловыми системами Linux. Мне кажется странным, что самая популярная ОС на планете имеет только одну файловую систему, которая все еще требует ручной дефрагментации. Может быть , есть альтернатива?

Обновление: вот что медленно по моим наблюдениям. Я строю / упаковываю проект, что означает много операций чтения / записи на диске. Система сборки является кроссплатформенной (Java, Maven), поэтому я могу выполнять точно такие же действия, например, при загрузке в Ubuntu.

В Linux мои сборки как минимум на 1/3 быстрее. Отсюда вопрос о файловой системе. Извините, если это неуместно.

4 ответа4

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

Я полагаю, что реальным решением было бы переписать вашу систему сборки так, чтобы она использовала собственный API файловой системы Windows вместо самого Unix API (fopen и т.д.) Под структурой переносимости. Но этого не произойдет, поэтому в основном вы застряли на том уровне производительности, который они считали приемлемым.

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

3

Существует одна файловая система, которая поддерживается новой ОС Windows и работает быстрее, чем NTFS. Это exFAT. Есть возможность использовать его для системного диска. Но неизвестно, какие осложнения это может иметь.

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

3

Хотя я бы хотел, чтобы что-то вроде ZFS было доступно для хостов Windows, NTFS не ужасная файловая система. Он поддерживает большинство "современных" функций файловой системы (расширенные атрибуты, ведение журналов, списки ACL, вы называете это имя), но ему мешает Explorer и большинство других приложений, не поддерживающих ни одного из них.

Одна вещь, которая абсолютно убьет его производительность - это наличие "слишком большого количества" записей в каталоге. После того, как вы передадите пару тысяч записей в один каталог, все замедлится. Буквально вся машина остановится в ожидании NTFS для создания или удаления записей, когда это происходит.

Раньше я работал с приложением, которое генерировало документы на основе HTML для сборок .NET; он будет создавать один файл для каждого свойства, метода, класса, пространства имен и т. д. Для более крупных сборок мы увидим 20+k файлов, все из которых будут выгружены в один каталог. Машина будет тратить пару часов во время сборки, заблокированной в NTFS.

Теоретически, Windows поддерживает плагины файловой системы, которые делают возможным использование ZFS, ext3 или чего-либо еще (даже FUSE). На практике API недокументированы, так что вы полностью самостоятельно.

Теперь, когда вы занимаетесь разработкой Java, можете ли вы установить другую ОС на свою машину или использовать виртуальную машину поверх Windows?

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

2

Есть ли у вас антивирусная программа, выполняющая проверку доступа / записи для папки вашего проекта?

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

В Linux у вас (вероятно) нет антивирусного программного обеспечения ....

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .