|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.07.2020, 18:54 | #1 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Скорость чтения RAM диска
Здравствуйте.
Есть вот такая штука, здесь описано что такой диск располагается непосредственно в оперативной памяти. Я создал себе гигабайт для тестов и поиграться. При монтировании в Daemoon Tools как RAM-диска - я вижу что шкала заполненности ОЗУ увеличивается на гигабайт. У меня DDR4, скорость чтения которой ни много ни мало - 20 гигабайт в секунду. За пруфами не ходил, просто посмотрел в данные бенчмарка AIDA64 - 19660 МБ/с. Задержка 70.5 наносекунд. Скорость кешей проца удивили, там счёт скоростей идёт уже на терабайты в секунду, и задержки 1-15 ns, но не об этом. Так вот, я делал разные манипуляции и конфигурации этого RAM-диска, и максимум чего я добился - 3000 МБ/с, это Buffered Read, достаточно стабильная скорость, с редкими просадками. Линейное максимум 2000 и скачет, рандомное максимум 430 и тоже скачет. Average Read Access стабильно 0.02 мс, то есть 20 000 наносекунд - почти в 300 раз хуже показателя RAM. Эту цифру я ожидал увидеть в скорости хотя бы линейного чтения, но точно не в задержке. Все тесты проводились в AIDA64. Это ну очень далеко от оперативы, не сопоставимо. Вопрос: почему так ? Ведь указанный объём (1 ГБ) честно занят в ОЗУ UPD 1: поработал с файлами на 5-гиговом RAM-диске, и обнаружил забавные вещи. 1. При работе с большими архивами (упаковка-распаковка на месте хранения) физическая оперативная память заполняется сверх того что занимает сам RAM-диск. 2. Со временем этот сверх-объём освобождается - это политика "Оптимальная производительность (по умолчанию)" в диспетчере устройств. 3. Если переключить на "Быстрое удаление" - скорость работы становится сильно хуже чем на HDD, в районе 10-20 МБ/с. 4. При работе в политике "Оптимальная производительность (по умолчанию)" - скорость активной работы* 1-2 ГБ/с, но пока сверх-объём памяти не освободится (п. 2) - дальнейшая работа с этим носителем невозможна (проводник глючит). * Под скоростью активной работы я подразумеваю скорость при записи, которую показывает архиватор 7zip при разархивировании. Исходя из п. 3 получается, что либо это вовсе не RAM, либо проблема где-то в другом месте, ибо скорость зависит от политики работы с накопителем и по факту - дополнительным кешированием данных всё в той же оперативе. UPD 2: все вышеперечисленные манипуляции проводились с привязанным VHD файлом, который хранится на вполне себе физическом HDD/SDD. Тип физического хранителя не особо важен, это видно по тестам. Без привязки физического хранилища - показатели скоростей чтения/записи/доступа - такие же самые, при записи так же занимается сверх-объём, но освобождается этот объём гораздо быстрее, и проводник не глючит (с носителем возможна нормальная работа). 1. Синхронизация с физическим накопителем сводит на нет все преимущества RAM-диска, и даже доставляет неудобств. 2. При перезапуске системы всё что было сохранено, в том числе файловая система - сносится в ноль, что вполне логично без синхронизации, и тогда эта конструкция пригодна для узкого набора задач, либо нужен ноутбук/ИБП (с живой батареей) + возможность синхронизации "по кнопке"/по расписанию. 3. Вопрос скорости остаётся открытым, почему так медленно 3 ГБ/с, по сравнению с ОЗУ 20 ГБ/с ?
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 18.07.2020 в 23:06. |
18.07.2020, 22:41 | #2 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Так что такая задержка вполне ожидаемая. Buffered бывает только Write. Во-вторых buffer переводиться на русский как элемент задержки. Попробуйте небуферезированный должно увеличить скорость чтения. У вас файл открыт в бинарном или текстовом режиме?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
18.07.2020, 22:55 | #3 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Как раз буферизированное чтение (Buffered Read, скриншот ниже) - самая высокая скорость.
Ну, не знаю, приложил скрин, что это тогда ?
Подпись ? Не, не слышал ...
|
18.07.2020, 22:56 | #4 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Подпись ? Не, не слышал ...
|
18.07.2020, 23:01 | #5 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Вот здесь сводка результатов теста. Сейчас скорость просела до 2600 (не знаю почему), но всё равно самая высокая. И это без привязки к VHD.
Подпись ? Не, не слышал ...
|
19.07.2020, 08:43 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,343
|
Попробуйте блоки в 64МБ (супротив нынешних 64К) и сравните результаты.
|
19.07.2020, 11:35 | #7 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
64 КБ/0.0002=3.2 ГБ/с
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
19.07.2020, 21:00 | #8 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
AIDA64 не даёт возможности выбрать размер блока, а Victoria даёт максимум 64 килобайта. К тому же Victoria некорректно отображает результаты, и максимум что я там видел - 1500 МБ/с.
То есть всё упирается в задержку я правильно понял ... Есть ли инструменты создания RAM-дисков, которые работают без этого ?
Подпись ? Не, не слышал ...
|
19.07.2020, 22:31 | #9 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,343
|
Ну так воспользуйтесь другим инструментом.
Таких программ вагон и тележка. Цитата:
Я не зря спрашивал про большие блоки. Если скорость сильно вырастит то значит задержки в драйвере. Если нет, то значит упираемся в скорость памяти. |
|
20.07.2020, 02:50 | #10 | |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Исходя из этой математики, теоретически максимальный размер блока при наибольшем быстродействии составит 400 кб, ближайший доступный при создании ФС exFAT 256 или 512 кб.
256/0.02=12500 512/0.02=25600 Но это теория. Практика куда менее быстрая. Максимум чего я добился - 3750 чтение и 3100 запись. Цитата:
На скриншоте запечатлил показатели чуть ниже, 3620 и 2975. exFAT 128 кб Говорят что такие скоростя уже достижимы на NVMe (не реклама - пруф, ещё).
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 20.07.2020 в 12:47. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание тестов на скорость чтения и скорость записи | Roman1867 | Помощь студентам | 30 | 17.05.2017 13:56 |
Ошибка чтения диска | kozak_mefody | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 4 | 10.11.2015 17:48 |
какой программой проверить скорость чтения HDD? | contin | Компьютерное железо | 2 | 18.05.2012 15:46 |
Загрузка с внешнего USB харддиска - скорость чтения | Alex Cones | Компьютерное железо | 12 | 28.12.2010 11:25 |
Низкая скорость чтения дисков в Win 7 | Ivan_32 | Компьютерное железо | 1 | 08.09.2010 14:20 |