С самой Windows95 и выше наблюдаю явление:
если поставить копировать большой файл а потом начать что нибудь читать с одного и того же винчестера то копирование снижается непропорционально количеству потоков.
Т.е. если имеем три потока данных то скорость, такое ощущение, делится не на 3 а на 10.
вопросы:
1. это мне кажется или оно таки есть ?
2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?
Это применимо не только к виндусным системам.
27.09.10 11:22: Перенесено модератором из 'Философия программирования' — Odi$$ey
Здравствуйте, Torie, Вы писали:
T>Так и есть. Квант переключения потоков маленький, а затраты на перемещение головки — очень большие. Вот она и мотается туда-обратно... [ship] T>Теоретически, в таких случаях ось могла бы вести себя поумнее, но M$ не до того
Можно пример кода какого-нибудь драйвера IDE-контроллера, где можно было бы увидеть связь "маленького кванта переключения потоков" с затратами на перемещение головки и общим торможением? Или хотя бы более подробное описание порочного принципа, лежащего в основе? И заодно хотелось бы знать, как бы могла себя вести ось в этой связи. Спасибо.
Здравствуйте, Torie, Вы писали:
T>Посмотри в BIOS — SATA Mode. Если стоит режим AHCI — то NCQ включен, если IDE — отключен. T>И кстати, если при установке винды стоял режим IDE, то переключить режим так просто не получится — винда будет показывать синий экран при загрузке. Придется попрыгать с бубном.
Особых прыжков не требуется
You can install the Miscrosoft standard AHCI driver from within Vista
throught Device Manager. In Device Manager select you IDE/Sata cotroller
and properties and selected updriver. The select browse my computer for
driver software. Select let me pict from list. In the screen untick the
box "show compatible hardward". Scroll dowwn under the Manufactuer
column and select the Standard AHCHI driver and select next. This should
the Microsoft AHCI driver. Reboot. Then go into the bios and change your
IDE configuration to AHCI. Once your reboot you can then install the
AHCI driver for your particular motherboard.
Попробовал — работает, Windows 7. Правда, в результате при установленном в BIOS режиме SATA == IDE Windows 7 теперь не загружается. Наверное, можно откатить с помощью Safe Mode.
Здравствуйте, Feonyf, Вы писали:
F>1. это мне кажется или оно таки есть ? F>2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?
Так и есть. Квант переключения потоков маленький, а затраты на перемещение головки — очень большие. Вот она и мотается туда-обратно, снижая общую скорость до уровня плинтуса. NCQ уменьшает потери за счет перестановки команд в буфере винчестера, но ненамного. (проверь, что он у тебя активирован)
Теоретически, в таких случаях ось могла бы вести себя поумнее, но M$ не до того
14.09.2010 7:50, Здравствуйте, Feonyf: > Р>Потому что это дело не программистов, а админов. > Почему ?
Потому что админы определяют что им важнее, скорость чтения или размер
хвостов.
> Вы пробовали ? Каковы изменения для двухпоточного чтения из больших > файлов по сравнению со стандартной конфигурацией ?
Сорри, винты перебивать не буду, сделал грубовато, но все равно
получается интересно:
2. MAXTOR STM3500320AS, NTFS 32K кластер
1 поток: 75Мб/сек
2 потока: 50Мб/сек
каждый следующий -1Мб/сек.
На втором попробовал запустить больше потоков. Каждый последующий
отбирает совсем чуть-чуть от общей скорости.
> Как вы считаете, на что я потом буду жаловаться когда я выполню Вашу > просьбу по большому кластеру ?
Это не просьба, это совет. Его можно проигнорировать.
> (я буду жаловаться на то что нет фичи по > сжатию файлов и у меня много маленьких файлов которым большой кластер не > подходит)
Я и говорю — решают админы. Фича по сжатию файлов вроде как от размера
кластера не зависит. Кстати, посмотрел сколько у мну файлов на 500Гб
винте: 150 000. Ну потеряется там три гига, как по мне, ну и черт с ними.
> Итого вопрос: а можно всё и вместе или нельзя ? Если нет то почему ?
Нет. Точнее да, но зависит сколько вы за это готовы платить.
Posted via RSDN NNTP Server 2.1 beta
Всё, что нас не убивает, ещё горько об этом пожалеет.
Здравствуйте, SE, Вы писали:
SE>Насколько долго должна бытьотложена запись файла.
Я бы предложил задержку в пределах 0.3-0.5 секунды, но конечно могу ошибаться
SE>Или наоборот, вот пишется файл, если ждать долго, то фильм начнет "заикаться"
там есть буферизация
SE>И что? Снова Билл Гейтс — нетрадиционного сексуально ориентирован?
Здравствуйте, ononim, Вы писали:
SE>>Ну почему же. Не далее как вчера киевский девелопер на местной юзергрупе рассказал про то, как он в феврале создал реквест на множественные активные рекордсеты в Azure (его поддержало множество девелоперов из разных стран), и они эту фичу таки получили уже в апреле. SE>>Другое дело, что в случае с Виндовс придется ждать года три до новой версии. O>А что мешает самому взять да написать драйвер-фильтр который подвесится над disk.sys и будет "оптимизировать" запросы?
Мешает, наверно, тот факт, что мне это ни разу не сдалось. Предложите лучше топиккастеру или Torie.
Здравствуйте, vitasR, Вы писали:
R>софтовый NCQ, как я понимаю, не так уж и просто сделать. Надо знать истинную геометрию диска, ремапы, положение головок и прочее
Железный NCQ, безусловно, всеми этими знаниями обладает. Только не из чего не следует, что он их как-либо использует
Вообще говоря, они прекрасно могли реализовать софтовый аналог NCQ, и давно. А не ждать, пока производители железа подтянут за них спустившиеся у MS штаны
SE>Вдруг в мелкософте прочитают, да сделают все как надо. А не прочитают, мы сами им скажем.
Здравствуйте, Torie, Вы писали:
T>Вообще говоря, они прекрасно могли реализовать софтовый аналог NCQ, и давно. А не ждать, пока производители железа подтянут за них спустившиеся у MS штаны
Очередь-то там есть (ну может не в 9x, но в NT точно есть). Вопрос в том, как ее сортировать. Потому что возьмут 5 программ, и накидают в эту очередь запросов, и будет бедная венда головками туда-сюда ворочать вместо того, чтобы делом заниматься. На эту тему написано сто пиццот миллионов штук научных статей, но судя по тому, что любая ОС при потоке несвязанных запросов от большого количества задач ведет себя так себе, нормального решения так и не придумали. Вот введут везде SSD, и проблема отпадет сама собой (зато появится другая, про которую пока и науки-то вроде нет).
T>Вообще говоря, они прекрасно могли реализовать софтовый аналог NCQ, и давно. А не ждать, пока производители железа подтянут за них спустившиеся у MS штаны
софтовый NCQ, как я понимаю, не так уж и просто сделать. Надо знать истинную геометрию диска, ремапы, положение головок и прочее
Здравствуйте, Torie, Вы писали:
T>Посмотри в BIOS — SATA Mode. Если стоит режим AHCI — то NCQ включен, если IDE — отключен. T>И кстати, если при установке винды стоял режим IDE, то переключить режим так просто не получится — винда будет показывать синий экран при загрузке. Придется попрыгать с бубном.
У меня вот, помнится, последний раз, когда пробовал, в режиме AHCI Windows XP вообще ставиться не хотела — кажется, говорила «тут ставиться не на что».
Здравствуйте, Ромашка, Вы писали:
Р>Потому что это дело не программистов, а админов.
Почему ?
Р>ЗЫ. Включи кеш на запись, переформати винт и поставь кластер побольше Р>(32К, например).
Вы пробовали ? Каковы изменения для двухпоточного чтения из больших файлов по сравнению со стандартной конфигурацией ?
Как вы считаете, на что я потом буду жаловаться когда я выполню Вашу просьбу по большому кластеру ? (я буду жаловаться на то что нет фичи по сжатию файлов и у меня много маленьких файлов которым большой кластер не подходит)
Итого вопрос: а можно всё и вместе или нельзя ? Если нет то почему ?
Здравствуйте, Feonyf, Вы писали:
F>вопросы: F>1. это мне кажется или оно таки есть ?
Да, так и есть. Время позиционирования головки на нужную дорожку ~единиц миллисекунд на современных винтах. Ели переключаться с одной дисковой задачи на другую несколько раз в секунду, то записать мало чего можно успеть.
F>2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?
Кое-что сделали...например NCQ
F>Это применимо не только к виндусным системам.
Здравствуйте, Feonyf, Вы писали:
F>1. это мне кажется или оно таки есть ?
Так и есть.
F>2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?
Поскольку используются файлы с разных частей диска, то если файлы расположены на одной пластине, на одной ее стороне, то головка мечется между позициями для считывания. Это обычно слышно даже как "дырчание".
Здравствуйте, SE, Вы писали:
SE>Откуда же оси знать, какой из файлов важнее. Что ни сделай пользователи останутся недовольны.
Да ей и не надо про это знать.
Тут ведь какая проблема, вот допустим потоки А и Б одновременно читают с винта. Головка переместилась чтобы прочитать данные для А, хоп — ее тут же дергает поток Б на другое место. А потом в обратную сторону. Вот так и мечется
Что надо было сделать — это отслеживать перемещения головки. Если она только что переместилась и читает данные, то попытки считать данные из другого места надо откладывать на небольшой промежуток, чтобы дать текущей операции чтения закончиться.
Здравствуйте, Torie, Вы писали:
T>Здравствуйте, SE, Вы писали:
SE>>Откуда же оси знать, какой из файлов важнее. Что ни сделай пользователи останутся недовольны.
T>Да ей и не надо про это знать. T>Тут ведь какая проблема, вот допустим потоки А и Б одновременно читают с винта. Головка переместилась чтобы прочитать данные для А, хоп — ее тут же дергает поток Б на другое место. А потом в обратную сторону. Вот так и мечется T>Что надо было сделать — это отслеживать перемещения головки. Если она только что переместилась и читает данные, то попытки считать данные из другого места надо откладывать на небольшой промежуток, чтобы дать текущей операции чтения закончиться.
Ну вот вам пример. У меня играет фильм, это операция на чтение. Я смотрю одним глазом фильм и правлю важный для меня файл.
Насколько долго должна бытьотложена запись файла. Допустим при этом, что ИБП у меня с севшей батарее, и вдруг отключают подачу электроэнергии?
Или наоборот, вот пишется файл, если ждать долго, то фильм начнет "заикаться"
И что? Снова Билл Гейтс — нетрадиционного сексуально ориентирован?
Здравствуйте, Torie, Вы писали:
T>Здравствуйте, A.Lokotkov, Вы писали:
AL>>Можно пример кода какого-нибудь драйвера IDE-контроллера
T>Проблема никаким боком не связана с драйверами. А почему вы про это спрашиваете?
Все же хотелось бы получить ответ на
И заодно хотелось бы знать, как бы могла себя вести ось в этой связи. Спасибо.
Вдруг в мелкософте прочитают, да сделают все как надо. А не прочитают, мы сами им скажем.
Здравствуйте, Torie, Вы писали:
SE>>Вдруг в мелкософте прочитают, да сделают все как надо. А не прочитают, мы сами им скажем.
T>Ну это из области крайне ненаучного фэнтези.
Ну почему же. Не далее как вчера киевский девелопер на местной юзергрупе рассказал про то, как он в феврале создал реквест на множественные активные рекордсеты в Azure (его поддержало множество девелоперов из разных стран), и они эту фичу таки получили уже в апреле.
Другое дело, что в случае с Виндовс придется ждать года три до новой версии.
Здравствуйте, Feonyf, Вы писали:
F>С помощью чего ? У меня ноутбук, диск seagate, vista.
Посмотри в BIOS — SATA Mode. Если стоит режим AHCI — то NCQ включен, если IDE — отключен.
И кстати, если при установке винды стоял режим IDE, то переключить режим так просто не получится — винда будет показывать синий экран при загрузке. Придется попрыгать с бубном.
SE>Ну почему же. Не далее как вчера киевский девелопер на местной юзергрупе рассказал про то, как он в феврале создал реквест на множественные активные рекордсеты в Azure (его поддержало множество девелоперов из разных стран), и они эту фичу таки получили уже в апреле. SE>Другое дело, что в случае с Виндовс придется ждать года три до новой версии.
А что мешает самому взять да написать драйвер-фильтр который подвесится над disk.sys и будет "оптимизировать" запросы?
Как много веселых ребят, и все делают велосипед...
Здравствуйте, Torie, Вы писали:
T>Посмотри в BIOS — SATA Mode. Если стоит режим AHCI — то NCQ включен, если IDE — отключен. T>И кстати, если при установке винды стоял режим IDE, то переключить режим так просто не получится — винда будет показывать синий экран при загрузке. Придется попрыгать с бубном.
Здравствуйте, Feonyf, Вы писали:
T>>Теоретически, в таких случаях ось могла бы вести себя поумнее, но M$ не до того
F>Добавили бы они флаг с названием "Желательно записывать большими кусками" в функцию CreateFile.
Зачем? Можно же зааллоцировать большой буфер, и читать/писать большими кусками
Здравствуйте, Pzz, Вы писали:
Pzz>Потому что возьмут 5 программ, и накидают в эту очередь запросов, и будет бедная венда головками туда-сюда ворочать вместо того, чтобы делом заниматься.
Здравствуйте, Centaur, Вы писали:
C>Здравствуйте, Torie, Вы писали:
T>>Посмотри в BIOS — SATA Mode. Если стоит режим AHCI — то NCQ включен, если IDE — отключен. T>>И кстати, если при установке винды стоял режим IDE, то переключить режим так просто не получится — винда будет показывать синий экран при загрузке. Придется попрыгать с бубном.
C>У меня вот, помнится, последний раз, когда пробовал, в режиме AHCI Windows XP вообще ставиться не хотела — кажется, говорила «тут ставиться не на что».
надо ставить IDE, сетап запустится и когда будет первая перезагрузка, переключить в AHCI. ТОгда будет все ок.
PD>Попробовал — работает, Windows 7. Правда, в результате при установленном в BIOS режиме SATA == IDE Windows 7 теперь не загружается. Наверное, можно откатить с помощью Safe Mode.
Как выяснилось, это еще не все.
Работать-то он работает, но все же в Device Manager устройства (HDD и CD-ROM) остались под ATA channel. Впрочем, это у меня с моей материнкой (M4A77TD) и AMD чипсетом, так что, возможно, для других будет иначе. В конце концов выяснилось, что надо скачать AMD SATA драйвер и попросить этот самый установленный AHCI SATA контроллер проапдейтить драйвер насильно. Драйвер для AMD SATA идет без сопровождения, так что ставил я его вручную. В результате появился AMD SATA controller, и HDD, и CD-ROM пересели к нему. Почему этот AMD SATA драйвер не ставился с диска материнки — бог знает.
Здравствуйте, SE, Вы писали:
SE>И что? Снова Билл Гейтс — нетрадиционного сексуально ориентирован?
В этом нет никаких сомнений, но не ясно при чём предыдущая телега про кино, под которое редактируют важный файл?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, SE, Вы писали:
SE>Поскольку используются файлы с разных частей диска, то если файлы расположены на одной пластине, на одной ее стороне, то головка мечется между позициями для считывания. Это обычно слышно даже как "дырчание".
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, SE, Вы писали:
SE>>Поскольку используются файлы с разных частей диска, то если файлы расположены на одной пластине, на одной ее стороне, то головка мечется между позициями для считывания. Это обычно слышно даже как "дырчание".
BZ>ты думаешь, что головки ходят независимо?
Я заметил что многие обсуждают NCQ. Обращаю внимание на это.
NCQ это хорошо когда оно есть и можно его обсудить. Но стартовое сообщение не об этом.
Когда оптимизировано на всех уровнях это хорошо. Хочется чтобы так оно и было.
Поэтому предложения:
1. создать про NCQ отдельную ветку, если нужно
2. в это ветке говорить только об операционной системе: почему она так тормозит, кто виноват, как это исправить, сколько это стоит, и когда это будет исправлено.
Т.е. философствовать т.к. врятли это когда либо исправят. А хочется чтобы исправили, поэтому и философствуем
19.09.2010 23:52, Здравствуйте, Feonyf: > Т.е. философствовать т.к. врятли это когда либо исправят. А хочется > чтобы исправили, поэтому и философствуем
Блин, ну неисправимо это... Это физическое свойство жесткого диска — для
перевода головок требуется время, причем довольно длительное. NCQ не
спасает совершенно, он даст прирост начиная с 5-6 потоков. Именно из-за
этой особенности сейчас идет вторая волна его внедрения на SATA винтах,
в сказевых винтах TCQ давно и успешно трудится. Но покупать на десктоп
их один черт не имеет смысла — прирост будет ощутим только на серверах.
Posted via RSDN NNTP Server 2.1 beta
Всё, что нас не убивает, ещё горько об этом пожалеет.
Здравствуйте, Ромашка, Вы писали:
Р>Блин, ну неисправимо это... Это физическое свойство жесткого диска — для Р>перевода головок требуется время, (...)
Неверю. Вот рассуждение:
Пошлём читать один файл. Допустим скорость в результате этого опыта 10 МБ/с. Характеристика HDD: скорость переключения на другой файл 20 мс (произвольный доступ головкой).
Теперь, пошлём читать два файла сразу.
В худшем случае будет: 4 килобайта считали переключились на второй файл, 4 килобайта считали переключились на первый и.т.д.
В лучшем случае будет: тоже самое только считываем по 10 мегабайт.
Понятно что во втором случае скорость произвольного доступа влияет на скорость гораздо меньше и ей (если она 20 мс) можно пренебречь.
Рассуждение верно ?
Еще случай:
Есть два приложения которые копируют файлы, и которые хотят сообщить операционной системе что для них важна скорость чтения а не отзывчивость.
Риторический вопрос: что будет если они пойдут одновременно читать разные большые файлы с CD-ROM ? (наверно тоже самое что в рассуждении выше, только ситуация ввиду долгого произвольного доступа будет в 10 раз хуже).
Здравствуйте, andrey82, Вы писали:
A>Здравствуйте, Feonyf, Вы писали:
F>>вопросы: F>>1. это мне кажется или оно таки есть ?
A>Да, так и есть. Время позиционирования головки на нужную дорожку ~единиц миллисекунд на современных винтах. Ели переключаться с одной дисковой задачи на другую несколько раз в секунду, то записать мало чего можно успеть.
F>>2. если оно так и есть, то почему программисты до сих пор не сделали грамотное разделение ресурсов диска ?
A>Кое-что сделали...например A>NCQ
F>>Это применимо не только к виндусным системам.
Непонятно какие на диске дорожки и головки. Там же контроллер стоит. Он показывает что диск имеет 256 головок. А на самом деле их две, может больше. И как он интерпретирует команду записи непонятно. Может в буфер пишет, а потом вываливает на диск большим куском.
Здравствуйте, shks57, Вы писали:
S>Непонятно какие на диске дорожки и головки. Там же контроллер стоит. Он показывает что диск имеет 256 головок. А на самом деле их две, может больше. И как он интерпретирует команду записи непонятно. Может в буфер пишет, а потом вываливает на диск большим куском.
Что значит "какие головки" обычные, физические, для чтения и записи... обычно от 2 до 8 штук. Независимо от алгоритма интерпретации данные на диск все равно в итоге потребуется сбрасывать, т.к. буфер невелик (16, 32, изредка 64Мб, при этом скорость линейной записи на современных винтах что-то около 50Мб/c)
Здравствуйте, SE, Вы писали:
T>>Теоретически, в таких случаях ось могла бы вести себя поумнее, но M$ не до того
SE>Откуда же оси знать, какой из файлов важнее. Что ни сделай пользователи останутся недовольны.
Как это откуда? Ей об этом должны сообщить прикладные программы через соответствующие API. В висте, кстати, появилась кое-какая поддержка для этого.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.