Тормоза при одновременном обращении к HDD
От: Feonyf  
Дата: 11.09.10 12:39
Оценка: :))) :)))
С самой Windows95 и выше наблюдаю явление:
если поставить копировать большой файл а потом начать что нибудь читать с одного и того же винчестера то копирование снижается непропорционально количеству потоков.

Т.е. если имеем три потока данных то скорость, такое ощущение, делится не на 3 а на 10.

вопросы:
1. это мне кажется или оно таки есть ?
2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?

Это применимо не только к виндусным системам.

27.09.10 11:22: Перенесено модератором из 'Философия программирования' — Odi$$ey
Моя строка построения буста:
.\bjam link=static threading=multi runtime-link=static -j %NUMBER_OF_PROCESSORS% --with-filesystem --with-thread --with-date_time address-model=64
Re: Тормоза при одновременном обращении к HDD
От: Sinix  
Дата: 11.09.10 12:43
Оценка:
Здравствуйте, Feonyf, Вы писали:

F>Т.е. если имеем три потока данных то скорость, такое ощущение, делится не на 3 а на 10.


Матчасть. В буквальном смысле. Хинт: дорожек несколько больше, чем головок
Re: Тормоза при одновременном обращении к HDD
От: andrey82  
Дата: 11.09.10 12:53
Оценка:
Здравствуйте, Feonyf, Вы писали:

F>вопросы:

F>1. это мне кажется или оно таки есть ?

Да, так и есть. Время позиционирования головки на нужную дорожку ~единиц миллисекунд на современных винтах. Ели переключаться с одной дисковой задачи на другую несколько раз в секунду, то записать мало чего можно успеть.

F>2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?


Кое-что сделали...например
NCQ

F>Это применимо не только к виндусным системам.
Re: Тормоза при одновременном обращении к HDD
От: Torie  
Дата: 11.09.10 12:54
Оценка: 1 (1) -1
Здравствуйте, Feonyf, Вы писали:

F>1. это мне кажется или оно таки есть ?

F>2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?

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

Теоретически, в таких случаях ось могла бы вести себя поумнее, но M$ не до того
Re: Тормоза при одновременном обращении к HDD
От: SE Украина  
Дата: 11.09.10 12:54
Оценка:
Здравствуйте, Feonyf, Вы писали:

F>1. это мне кажется или оно таки есть ?


Так и есть.

F>2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?


Поскольку используются файлы с разных частей диска, то если файлы расположены на одной пластине, на одной ее стороне, то головка мечется между позициями для считывания. Это обычно слышно даже как "дырчание".
Re[2]: Тормоза при одновременном обращении к HDD
От: Feonyf  
Дата: 11.09.10 13:03
Оценка:
Здравствуйте, Torie, Вы писали:

T>Теоретически, в таких случаях ось могла бы вести себя поумнее, но M$ не до того


Добавили бы они флаг с названием "Желательно записывать большими кусками" в функцию CreateFile.

Блин, чё так все плохо то...
Моя строка построения буста:
.\bjam link=static threading=multi runtime-link=static -j %NUMBER_OF_PROCESSORS% --with-filesystem --with-thread --with-date_time address-model=64
Re: Тормоза при одновременном обращении к HDD
От: okman Беларусь  
Дата: 11.09.10 13:10
Оценка:
Здравствуйте, Feonyf, Вы писали:

почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?

Сделали RAID. Только не программисты.
Re[3]: Тормоза при одновременном обращении к HDD
От: Torie  
Дата: 11.09.10 13:11
Оценка:
Здравствуйте, Feonyf, Вы писали:

F>Блин, чё так все плохо то...


Се ля ви. Правило 95%
А NCQ все-таки проверь, что оно включено.
Re[2]: Тормоза при одновременном обращении к HDD
От: SE Украина  
Дата: 11.09.10 13:32
Оценка:
Здравствуйте, Torie, Вы писали:

T>Теоретически, в таких случаях ось могла бы вести себя поумнее, но M$ не до того


Откуда же оси знать, какой из файлов важнее. Что ни сделай пользователи останутся недовольны.

Ну, а фактически они хотя бы дефрагментацию сделали
Re[3]: Тормоза при одновременном обращении к HDD
От: Torie  
Дата: 11.09.10 13:41
Оценка:
Здравствуйте, SE, Вы писали:

SE>Откуда же оси знать, какой из файлов важнее. Что ни сделай пользователи останутся недовольны.


Да ей и не надо про это знать.
Тут ведь какая проблема, вот допустим потоки А и Б одновременно читают с винта. Головка переместилась чтобы прочитать данные для А, хоп — ее тут же дергает поток Б на другое место. А потом в обратную сторону. Вот так и мечется
Что надо было сделать — это отслеживать перемещения головки. Если она только что переместилась и читает данные, то попытки считать данные из другого места надо откладывать на небольшой промежуток, чтобы дать текущей операции чтения закончиться.
Re[2]: Тормоза при одновременном обращении к HDD
От: A.Lokotkov Россия http://www.linkedin.com/pub/alexander-lokotkov/a/701/625
Дата: 11.09.10 13:42
Оценка: 1 (1) +3
Здравствуйте, Torie, Вы писали:

T>Так и есть. Квант переключения потоков маленький, а затраты на перемещение головки — очень большие. Вот она и мотается туда-обратно... [ship]

T>Теоретически, в таких случаях ось могла бы вести себя поумнее, но M$ не до того

Можно пример кода какого-нибудь драйвера IDE-контроллера, где можно было бы увидеть связь "маленького кванта переключения потоков" с затратами на перемещение головки и общим торможением? Или хотя бы более подробное описание порочного принципа, лежащего в основе? И заодно хотелось бы знать, как бы могла себя вести ось в этой связи. Спасибо.
bloß it hudla
Re[4]: Тормоза при одновременном обращении к HDD
От: SE Украина  
Дата: 11.09.10 13:46
Оценка:
Здравствуйте, Torie, Вы писали:

T>Здравствуйте, SE, Вы писали:


SE>>Откуда же оси знать, какой из файлов важнее. Что ни сделай пользователи останутся недовольны.


T>Да ей и не надо про это знать.

T>Тут ведь какая проблема, вот допустим потоки А и Б одновременно читают с винта. Головка переместилась чтобы прочитать данные для А, хоп — ее тут же дергает поток Б на другое место. А потом в обратную сторону. Вот так и мечется
T>Что надо было сделать — это отслеживать перемещения головки. Если она только что переместилась и читает данные, то попытки считать данные из другого места надо откладывать на небольшой промежуток, чтобы дать текущей операции чтения закончиться.

Ну вот вам пример. У меня играет фильм, это операция на чтение. Я смотрю одним глазом фильм и правлю важный для меня файл.
Насколько долго должна бытьотложена запись файла. Допустим при этом, что ИБП у меня с севшей батарее, и вдруг отключают подачу электроэнергии?
Или наоборот, вот пишется файл, если ждать долго, то фильм начнет "заикаться"
И что? Снова Билл Гейтс — нетрадиционного сексуально ориентирован?
Re[3]: Тормоза при одновременном обращении к HDD
От: Torie  
Дата: 11.09.10 13:48
Оценка:
Здравствуйте, A.Lokotkov, Вы писали:

AL>Можно пример кода какого-нибудь драйвера IDE-контроллера


Проблема никаким боком не связана с драйверами. А почему вы про это спрашиваете?
Re[4]: Тормоза при одновременном обращении к HDD
От: SE Украина  
Дата: 11.09.10 13:50
Оценка:
Здравствуйте, Torie, Вы писали:

T>Здравствуйте, A.Lokotkov, Вы писали:


AL>>Можно пример кода какого-нибудь драйвера IDE-контроллера


T>Проблема никаким боком не связана с драйверами. А почему вы про это спрашиваете?


Все же хотелось бы получить ответ на

И заодно хотелось бы знать, как бы могла себя вести ось в этой связи. Спасибо.


Вдруг в мелкософте прочитают, да сделают все как надо. А не прочитают, мы сами им скажем.
Re[5]: Тормоза при одновременном обращении к HDD
От: Torie  
Дата: 11.09.10 13:52
Оценка: :))
Здравствуйте, SE, Вы писали:

SE>Насколько долго должна бытьотложена запись файла.


Я бы предложил задержку в пределах 0.3-0.5 секунды, но конечно могу ошибаться

SE>Или наоборот, вот пишется файл, если ждать долго, то фильм начнет "заикаться"


там есть буферизация

SE>И что? Снова Билл Гейтс — нетрадиционного сексуально ориентирован?


Не знаю, этим вопросом я не интересовался.
Re[5]: Тормоза при одновременном обращении к HDD
От: Torie  
Дата: 11.09.10 13:55
Оценка: :)
Здравствуйте, SE, Вы писали:

SE>Все же хотелось бы получить ответ на

SE>

SE>И заодно хотелось бы знать, как бы могла себя вести ось в этой связи. Спасибо.


http://rsdn.ru/forum/philosophy/3954533.1.aspx
Автор: Torie
Дата: 11.09.10

Вообще говоря, они прекрасно могли реализовать софтовый аналог NCQ, и давно. А не ждать, пока производители железа подтянут за них спустившиеся у MS штаны

SE>Вдруг в мелкософте прочитают, да сделают все как надо. А не прочитают, мы сами им скажем.


Ну это из области крайне ненаучного фэнтези.
Re[6]: Тормоза при одновременном обращении к HDD
От: SE Украина  
Дата: 11.09.10 14:05
Оценка:
Здравствуйте, Torie, Вы писали:

SE>>Вдруг в мелкософте прочитают, да сделают все как надо. А не прочитают, мы сами им скажем.


T>Ну это из области крайне ненаучного фэнтези.


Ну почему же. Не далее как вчера киевский девелопер на местной юзергрупе рассказал про то, как он в феврале создал реквест на множественные активные рекордсеты в Azure (его поддержало множество девелоперов из разных стран), и они эту фичу таки получили уже в апреле.
Другое дело, что в случае с Виндовс придется ждать года три до новой версии.
Re[4]: Тормоза при одновременном обращении к HDD
От: Feonyf  
Дата: 11.09.10 15:26
Оценка:
Здравствуйте, Torie, Вы писали:

T>А NCQ все-таки проверь, что оно включено.


С помощью чего ? У меня ноутбук, диск seagate, vista.
Моя строка построения буста:
.\bjam link=static threading=multi runtime-link=static -j %NUMBER_OF_PROCESSORS% --with-filesystem --with-thread --with-date_time address-model=64
Re[5]: Тормоза при одновременном обращении к HDD
От: Torie  
Дата: 11.09.10 15:38
Оценка:
Здравствуйте, Feonyf, Вы писали:

F>С помощью чего ? У меня ноутбук, диск seagate, vista.


Посмотри в BIOS — SATA Mode. Если стоит режим AHCI — то NCQ включен, если IDE — отключен.
И кстати, если при установке винды стоял режим IDE, то переключить режим так просто не получится — винда будет показывать синий экран при загрузке. Придется попрыгать с бубном.
Re[7]: Тормоза при одновременном обращении к HDD
От: ononim  
Дата: 11.09.10 18:16
Оценка:
SE>Ну почему же. Не далее как вчера киевский девелопер на местной юзергрупе рассказал про то, как он в феврале создал реквест на множественные активные рекордсеты в Azure (его поддержало множество девелоперов из разных стран), и они эту фичу таки получили уже в апреле.
SE>Другое дело, что в случае с Виндовс придется ждать года три до новой версии.
А что мешает самому взять да написать драйвер-фильтр который подвесится над disk.sys и будет "оптимизировать" запросы?
Как много веселых ребят, и все делают велосипед...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.