Функция кэширования записи на диск и ограниченное использование оперативной памяти в Windows 10 Pro - 256 ГБ DDR4

У меня есть рабочая станция с Windows 10 Professional, которую я использую для имитации потока материалов в оттисках. Программное обеспечение FEA, которое я использую, создает большие файлы базы данных объемом 50-100 ГБ для каждой модели, которую я запускаю. Копирование этих файлов на вращающийся носитель для хранения данных, похоже, не использует объем оперативной памяти, которую эта система имеет во время передачи, быстрого запуска на секунду или две, а затем сброса на собственную скорость передачи данных на два диска RAID0 7200RPM 300 МБ /с. (171-342 секунд). Файлы поступают с программного RAID0 двух разделов по 600 ГБ на двух 1,2 ТБ твердотельных накопителях Intel 750 PCIe NVMe емкостью 1,2 ТБ, поэтому производительность чтения не является проблемой. Система работает от ИБП 2200 ВА с EBM и еженедельно резервируется на наш сервер хранения, поэтому не стоит беспокоиться о потере данных.

Меня интересует следующее:

Если я смогу настроить параметры кэша Windows 10, чтобы прочитать все файлы 50-100 ГБ в ОЗУ со скоростью 4 ГБ /с (12-25 секунд), на которые способны два процессора Intel 750, и затем прозрачно записать их на диск. У меня сложилось впечатление, что встроенная функция Windows «кеширование диска» на это способна, но некоторые настройки размера кэша по умолчанию в Windows ограничивают кэш примерно до 5 ГБ (отсюда небольшой всплеск скорости при запуске). ). Я не думаю, что этот всплеск исходит из скупой кэш-памяти 128 МБ на целевых дисках, поскольку использование «модифицированной» физической памяти в первую секунду или около того увеличивается примерно на 5 ГБ. Эти 5 ГБ могут быть записаны на диск после исчезновения диалогового окна переноса. Использование оперативной памяти уменьшается со скоростью двух дисков 7200RPM в RAID0. После завершения вы можете увидеть, как активность диска падает до нуля, а использование ОЗУ возвращается к норме. Это говорит мне о том, что кеширование диска по крайней мере работает, но не более 5 ГБ.

Система будет в порядке, используя 50-100 ГБ доступной оперативной памяти для этой передачи, так как для моделирования обычно используется до 80 ГБ ОЗУ, а для моделирования не используется такой объем ОЗУ до последних этапов моделирования. .

У меня есть рабочая станция Dell Precision T7910 со следующими характеристиками:

2P Xeon E5-2687W v4
256GB LRDIMM ECC DDR4 2400MHz
Quadro M4000
x2 Intel 750 1.2TB PCIe NVMe, one boot, 600GB RAID0 Two Partitons
x2 WD Gold 8TB in software RAID0 on SAS 12 GB Ports (128MB Cache)
Eaton 5PX 2200 IRT 240V UPS
Windows 10 Pro 1703 - System is old enough to not have Windows 10 Pro for Workstations

Что я пробовал:

Checked/Enabled: "Enable write caching on the device." - On each Disk
Checked/Enabled: "Turn off Windows write-cache buffer flushing on the device." - On each Disk
Made sure Superfetch service is running (for whatever good that does).
Moved away from built-in hardware RAID, as there is NO cache anyway.

Я исследовал другие темы со схожими проблемами и натолкнулся на другую более старую ветку, в которой упоминается инструмент "CacheSet":

Как увеличить дисковый кэш Windows 7

Будет ли это применимо к моему сценарию использования или я продолжу искать?

Правильно ли я понимаю, как работает кэширование диска на платформе Windows, или оно работает иначе, чем я ожидал? Я просто ищу кэширование записи в основную память, используя, возможно, до 100 ГБ оперативной памяти, и ничего больше.

Спасибо за вашу помощь! Любые предложения приветствуются.

EDIT: Запуск этого программного обеспечения cacheset.exe в качестве ADMIN сообщает о «пиковом размере» 663732 КБ, который кажется слишком маленьким (648 МБ?). Просто не уверен, что я хочу совершить изменение этого параметра и, возможно, испортить эту производственную систему. Предел, в который я продолжаю работать, составляет около 5 ГБ.

ДВОЙНОЕ РЕДАКТИРОВАНИЕ: Я пересмотрел очевидные ГБ, которые, похоже, на самом деле кешируются. Ключ смотрел на «Модифицированную физическую память» и видел «5» ГБ в верхней части передачи. Все еще пытаюсь увеличить его до 100 ГБ.

Еще раз спасибо!

7 голосов | спросил GHTurbines 27 12017vEurope/Moscow11bEurope/MoscowMon, 27 Nov 2017 12:02:34 +0300 2017, 12:02:34

1 ответ


2

Большой кеш не поможет, не с любым стандартным приложением для копирования файлов.

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

Причина в том, что данные в кэше небезопасны - они могут исчезнуть в любое время. Любая оперативная память, используемая кешем, которая не была изменена с момента ее чтения с диска, считается сбрасываемой диспетчером памяти. То есть, если для чего-то еще требуется ОЗУ, ОЗУ, используемое кешем, может быть извлечено из кеша и «перенаправлено», т. Е. Отдано чему-то другому, в любой момент. Конечно, это возможно - в конце концов, нигде в кэше не должно быть данных, которые только . (Если он не был изменен с момента чтения с диска. В этом случае он автоматически ставится в очередь для обратной записи, которая произойдет в течение четырех секунд; его нельзя переназначить до завершения обратной записи.)

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

Обратите внимание, что программа копирования (или любое другое приложение) не может даже определить, находится ли что-то в кэше. Там нет интерфейса для этого. Даже если бы она существовала, информация считалась бы «устаревшей» в тот момент, когда она была извлечена, даже до того, как приложение посмотрело на нее. Предполагается, что файловый кеш работает автоматически, прозрачен для приложений, и часть прозрачности заключается в том, что на нем очень мало элементов управления.

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

(Вам может быть интересно: «Так что же хорошего в любом случае?») Главная цель файлового кэша - сделать повторный доступ к многочисленным маленьким файлам (и файлу системные метаданные) быстрее. И делает это довольно хорошо.)

SuperFetch

TL, DR версия: SuperFetch также не дает вам этого.

Вы правы в своем выраженном сомнении относительно SuperFetch. Хотя SuperFetch эффективен в том, что он пытается сделать, это не поможет в этом случае. Что делает SuperFetch, так это отслеживает файлы, к которым часто обращаются, скажем, при каждой загрузке, и пытается прочитать их в ОЗУ заранее по мере необходимости.

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

SuperFetch - это отдельный механизм, изначально добавленный в Vista. Это упреждающий , пытающийся предварительно выбрать вещи, к которым, как наблюдали, часто обращались в прошлом.

SuperFetch управляет своей оперативной памятью отдельно от файлового кэша Windows. SuperFetch использует страницы с более низким приоритетом в списке резервных страниц Windows - и это забавно, он просто оставляет их в этом списке, поэтому они остаются частью «доступной» оперативной памяти. (Таким образом, при прочих равных условиях вы не заметите разницы в «Доступной» ОЗУ с нашей без SuperFetch, но вы заметите разницу в объеме сообщаемого «Кэша».) ОЗУ, назначенное файловому кешу в рабочем наборе и, следовательно, потребуется немного больше времени для перепрофилирования, если возникнет такая необходимость. Из-за этой конструкции кэш SuperFetch еще быстрее «отбрасывается», чем файловый кеш Windows, поэтому он не даетВы - безопасная временная копия чего-либо, даже больше, чем файловый кеш.

Так что же можно сделать?

Чтобы решить вашу проблему, я бы посмотрел на выделенное оборудование. Возможно, получите один не очень дорогой или быстрый SSD, скажем, 120 ГБ и скопируйте данные из вашего массива SSD в него, а затем скопируйте их оттуда на жесткий диск. Это, увы, будет означать, что вы не сможете начать запись на жесткие диски, пока все ваши данные не будут скопированы во временную, поэтому это займет больше времени, чем то, что вы делаете сейчас. Но исходные данные будут освобождены раньше.

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

Может помочь специальная программа копирования, которая знает структуру ваших данных.

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

ответил Jamie Hanrahan 25 FebruaryEurope/MoscowbSun, 25 Feb 2018 00:08:01 +0300000000amSun, 25 Feb 2018 00:08:01 +030018 2018, 00:08:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132