С самой Windows95 и выше наблюдаю явление:
если поставить копировать большой файл а потом начать что нибудь читать с одного и того же винчестера то копирование снижается непропорционально количеству потоков.
Т.е. если имеем три потока данных то скорость, такое ощущение, делится не на 3 а на 10.
вопросы:
1. это мне кажется или оно таки есть ?
2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?
Это применимо не только к виндусным системам.
27.09.10 11:22: Перенесено модератором из 'Философия программирования' — Odi$$ey
Здравствуйте, Feonyf, Вы писали:
F>вопросы: F>1. это мне кажется или оно таки есть ?
Да, так и есть. Время позиционирования головки на нужную дорожку ~единиц миллисекунд на современных винтах. Ели переключаться с одной дисковой задачи на другую несколько раз в секунду, то записать мало чего можно успеть.
F>2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?
Кое-что сделали...например NCQ
F>Это применимо не только к виндусным системам.
Здравствуйте, Feonyf, Вы писали:
F>1. это мне кажется или оно таки есть ? F>2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?
Так и есть. Квант переключения потоков маленький, а затраты на перемещение головки — очень большие. Вот она и мотается туда-обратно, снижая общую скорость до уровня плинтуса. NCQ уменьшает потери за счет перестановки команд в буфере винчестера, но ненамного. (проверь, что он у тебя активирован)
Теоретически, в таких случаях ось могла бы вести себя поумнее, но M$ не до того
Здравствуйте, Feonyf, Вы писали:
F>1. это мне кажется или оно таки есть ?
Так и есть.
F>2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?
Поскольку используются файлы с разных частей диска, то если файлы расположены на одной пластине, на одной ее стороне, то головка мечется между позициями для считывания. Это обычно слышно даже как "дырчание".
Здравствуйте, SE, Вы писали:
SE>Откуда же оси знать, какой из файлов важнее. Что ни сделай пользователи останутся недовольны.
Да ей и не надо про это знать.
Тут ведь какая проблема, вот допустим потоки А и Б одновременно читают с винта. Головка переместилась чтобы прочитать данные для А, хоп — ее тут же дергает поток Б на другое место. А потом в обратную сторону. Вот так и мечется
Что надо было сделать — это отслеживать перемещения головки. Если она только что переместилась и читает данные, то попытки считать данные из другого места надо откладывать на небольшой промежуток, чтобы дать текущей операции чтения закончиться.
Здравствуйте, Torie, Вы писали:
T>Так и есть. Квант переключения потоков маленький, а затраты на перемещение головки — очень большие. Вот она и мотается туда-обратно... [ship] T>Теоретически, в таких случаях ось могла бы вести себя поумнее, но M$ не до того
Можно пример кода какого-нибудь драйвера IDE-контроллера, где можно было бы увидеть связь "маленького кванта переключения потоков" с затратами на перемещение головки и общим торможением? Или хотя бы более подробное описание порочного принципа, лежащего в основе? И заодно хотелось бы знать, как бы могла себя вести ось в этой связи. Спасибо.
Здравствуйте, Torie, Вы писали:
T>Здравствуйте, SE, Вы писали:
SE>>Откуда же оси знать, какой из файлов важнее. Что ни сделай пользователи останутся недовольны.
T>Да ей и не надо про это знать. T>Тут ведь какая проблема, вот допустим потоки А и Б одновременно читают с винта. Головка переместилась чтобы прочитать данные для А, хоп — ее тут же дергает поток Б на другое место. А потом в обратную сторону. Вот так и мечется T>Что надо было сделать — это отслеживать перемещения головки. Если она только что переместилась и читает данные, то попытки считать данные из другого места надо откладывать на небольшой промежуток, чтобы дать текущей операции чтения закончиться.
Ну вот вам пример. У меня играет фильм, это операция на чтение. Я смотрю одним глазом фильм и правлю важный для меня файл.
Насколько долго должна бытьотложена запись файла. Допустим при этом, что ИБП у меня с севшей батарее, и вдруг отключают подачу электроэнергии?
Или наоборот, вот пишется файл, если ждать долго, то фильм начнет "заикаться"
И что? Снова Билл Гейтс — нетрадиционного сексуально ориентирован?
Здравствуйте, Torie, Вы писали:
T>Здравствуйте, A.Lokotkov, Вы писали:
AL>>Можно пример кода какого-нибудь драйвера IDE-контроллера
T>Проблема никаким боком не связана с драйверами. А почему вы про это спрашиваете?
Все же хотелось бы получить ответ на
И заодно хотелось бы знать, как бы могла себя вести ось в этой связи. Спасибо.
Вдруг в мелкософте прочитают, да сделают все как надо. А не прочитают, мы сами им скажем.
Здравствуйте, SE, Вы писали:
SE>Насколько долго должна бытьотложена запись файла.
Я бы предложил задержку в пределах 0.3-0.5 секунды, но конечно могу ошибаться
SE>Или наоборот, вот пишется файл, если ждать долго, то фильм начнет "заикаться"
там есть буферизация
SE>И что? Снова Билл Гейтс — нетрадиционного сексуально ориентирован?
Вообще говоря, они прекрасно могли реализовать софтовый аналог NCQ, и давно. А не ждать, пока производители железа подтянут за них спустившиеся у MS штаны
SE>Вдруг в мелкософте прочитают, да сделают все как надо. А не прочитают, мы сами им скажем.
Здравствуйте, Torie, Вы писали:
SE>>Вдруг в мелкософте прочитают, да сделают все как надо. А не прочитают, мы сами им скажем.
T>Ну это из области крайне ненаучного фэнтези.
Ну почему же. Не далее как вчера киевский девелопер на местной юзергрупе рассказал про то, как он в феврале создал реквест на множественные активные рекордсеты в Azure (его поддержало множество девелоперов из разных стран), и они эту фичу таки получили уже в апреле.
Другое дело, что в случае с Виндовс придется ждать года три до новой версии.
Здравствуйте, Feonyf, Вы писали:
F>С помощью чего ? У меня ноутбук, диск seagate, vista.
Посмотри в BIOS — SATA Mode. Если стоит режим AHCI — то NCQ включен, если IDE — отключен.
И кстати, если при установке винды стоял режим IDE, то переключить режим так просто не получится — винда будет показывать синий экран при загрузке. Придется попрыгать с бубном.
SE>Ну почему же. Не далее как вчера киевский девелопер на местной юзергрупе рассказал про то, как он в феврале создал реквест на множественные активные рекордсеты в Azure (его поддержало множество девелоперов из разных стран), и они эту фичу таки получили уже в апреле. SE>Другое дело, что в случае с Виндовс придется ждать года три до новой версии.
А что мешает самому взять да написать драйвер-фильтр который подвесится над disk.sys и будет "оптимизировать" запросы?
Как много веселых ребят, и все делают велосипед...