Для работы проектов iXBT.com нужны файлы cookie и сервисы аналитики.
Продолжая посещать сайты проектов вы соглашаетесь с нашей
Политикой в отношении файлов cookie
blacklion79
Комментатор
Серебряков Лев
Рейтинг
+320.70
Автор не входит в состав редакции iXBT.com (подробнее »)
Пол-года бьюсь — ничего похожего в России найти не могу, а та контрабанда, что я привёз из Шри Ланки, выродилась и стала невкусной :-(
У меня ни разу винде (10-ая) без моего разрешения ничего не ставила и не перегружалась.
Клоуны, блин.
Ждём когда их переделают в томограф? А что, модели на 1.5Тл — вполне годные уже для некоторых задач, не всё же на 3Тл смотреть.
Спасибо :-)
Несомненно, PrimoCache работает. Вопрос же не в его эффективности а в эффективности системы в целом. Кстати, хитрейт 17.8% это вообще ни о чём. На тех системах, где мне просто посмотреть (см. выше в другой ветке про торренты) я вижу 95% штатными средствами. На винде… Хмм… Надо поискать… Нашёл только моментальные показатели, там всё болтается на уровне 100%, но это фиговые показатели, хотелось бы, конечно, общее число байтов прочитанных из кэша и мимо кэша с момента старта системы. Пока не могу найти.
И, да, отложенная запись — это, повторю в который раз, — лотерея. И об этом знают и честно предупреждают авторы PrimoCache, за что им отдельный респект, что инженеры у них главнее маркетологов. Могли бы умолчать.
А красота идеи… Ещё во времена DOS 6.2 у MS была такая штатная утилита вообще-то (smartdrv). Сейчас, повторю, я на 95% уверен, что это не нужно, так как система и сама отлично справляется. Т.е. идея-то красивая, спору нет, но, во-первых, она стара примерно как иерархия памяти у вычислительной системы и, во вторых, очень трудно сделать правильно, множество тонкостей.
.
Молодцы, честные.
Ещё раз: или мы слушаемся операционную систему и тогда всё наше кэширование только повторяет то, что уже сделала ОС сама в своих кэшах, или мы ей врём и тогда повышаем вероятность разрушения файловой системы.
Если бы у ОС не было кэша — как у DOS когда-то — то да, всё справедливо. Но нет, современные системы очень эффективно и агрессивно кэшируют все дисковые операции сами. У меня сейчас вот из 32 гигабайт памяти 19 гигабайт занято кэшом — как вы думаете, будет ли лучше, если я отрежу 8 гигабайт и буду кэшировать ещё раз, денржа кучу данных в памяти дважды?
У любой FS есть два типа операций записи — те, что можно отложить ради увеличения эффективности (пользовательские данные если софт не сказал fsync() или его виндовый аналог а так же некоторые данные необходимые самой FS) и те, что откладывать нельзя, так как именно они обеспечивают целостность структур файловой системы. Любая FS спроектирована таким образом (ну, если не считать багов), что она остаётся в корректном состоянии именно потому что последовательность изменений её внутренних структур выстроена так, что когда все эти записи подтверждаются, то и файловая система не разрушена. Предпринимаются большие усилия на уровне дизайна файловых систем, что бы таких важных записей было поменьше потому что все понимают, что тормоза именно в них. Пример механизма группировки таких операций без риска нарушить целостность файловой системы — Soft Updates в файловой система FFS (я, увы, не знаком с последними достижениями файловых систем на Linux, так что примеров оттуда привести не могу).
В современных OS не бывает записи прямо на диск. Ну, почти не бывает, но, в общем, любая штатная запись проходит через тот или иной системный кэш. Причём, все современные OS (т.е. по сути Windows, MacOS, Linux и *BSD) настраиваются таким образом, что бы не держать свободную физическую память вообще. Как только появляется свободная физическая память — сразу же она отдаётся дисковому кешу. Если есть свободная память — это значит, нет ни тяжёлых программ ни дисковой активности вообще. Так вот, этот системный кэш — он знает про те записи, которые задерживать нельзя, потому что от их успеха зависит целостность файловой системы и драйвер файловой системы ждёт их честного подтверждения. И именно тут могут быть тормоза из-за частого обновления access time, например (а вы ещё не отключили его? А почему? А зачем вам atime, ну если вы вообще заботитесь о выжимании последних капель производительности?). Такую запись надо подтвердить во-первых, честно (т.е. не положить в кэш и подтвердить, а дождаться подтверждения от носителя что, впрочем, у бытовых носителей ничего не гарантирует, но это отдельная история) а, во-вторых, подтвердить быстро (потому что файловая система не делает никаких других операций пока не будет закончена эта).
Так вот, если мы встраиваем дополнительный уровень кэша в RAM (т.е. в непостоянной памяти), на уровне блоков, то у нас есть два пути: Первый путь — быть честными. И все важные (синхронные) записи пускать мимо кэша. Но тогда мы ничего не ускоряем а, скорее, замедляем, так как отъедаем память у системного кэша и данные кэшируются дважды. Один вред. Путь второй — врать. И откладывать даже такие синхронные записи. Ускорение некоторое будет, несомненно. Но вот тут мы играем с огнём — потому что мы врём. И если система рухнет в неудачный момент, то будут потеряны не только пользовательские данные записанные в последние секунды (это может быть и с системным кэшом, это ожидаемо), но и вместо согласованных структур данных файловой системы на диске может оказаться винигрет. Какие-то важные записи пройдут, какие-то нет, причём в худшем случае пройдут более поздние, сделанные в предположении, что предыдущие уже на диске. Так можно потерять гораздо больше, чем последние несколько минут данных. Так можно потерять и очень старые данные, и данные записанные час назад, и что угодно. Стоит ли небольшое ускорение этого? Решать вам. Но понимать это надо.
И есть ещё одна тонкость — так как операционная система и так старается раздуть свой кэш насколько это возможно, а мы теперь кэшируем ещё и блоки прямо с диска в той же памяти, то часть данных получается закэшированной дважды, а кэш системмы становится менее эффективным. Т.е. вообще-то можно получить даже проигрыш в производительности вместо выигрыша.
Вот на что будет интересно посмотреть — как файловые системы адаптируют к постоянным кэшам в памяти, когда NV-DIMM станут обыденностью. Вот тут наработки Rapid Mode и PrimoCache могут здорово пригодиться. Но пока NV-DIMM — серверная экзотика.
Хороший пример встроенного глубокого кеширования — ZFS.
РЕАЛЬНАЯ работа — это РЕАЛЬНЫЕ тесты, причём двойные-слепые.
Ещё раз: это кеширование в RAM. Технология понятная, с понятными плюсами-минусами, но это не ускорение записи на SSD.