русский
Germany.ruForen → Архив Досок→ Computer & Co

Операционка - однопоточность и многопоточность

640  1 2 3 4 alle
  M.H. Водяной19.11.09 02:10
NEW 19.11.09 02:10 
in Antwort Murr 19.11.09 00:05
В ответ на:
Или... хммм... в Выни есть процесс/поток, который гарантировно не делает _ничего_ полезного - можно предложить преподу выключить ненужный поцесс для увеличения производительности системы... Будет интересен сам процесс и достигнутый результат...

И процесс, и результаты бенчерами пережёваны и проглочены мульён раз.
Для получения максимально возможного результата в СуперПи нужно:
- оставить в вине ХР только 4 процесса, остальные, в т.ч. проводник, выключаются. Выкл. (вроде бы... забыл точно, какой именно) userinit.exe вызывает shutdown, против чего помогает команда "shutdown a";
- очистить память от мусора, для чего обычно копируется файл большого размера. Я запускал для этого прогу memTest, занимающую 90% памяти;
- дать приоритет реального времени superpi.exe.
Данные мероприятия дают в SuperPi 1M выигрыш в десятые доли секунды (при результатах порядка 10с). На рабочей винде с кучей запущенных прог резалт будет хуже на 1-2 с.
Кстати, SuperPi - автору хороший пример однопоточной проги, количество ядер CPU никак не сказывается на скорости вычисления.
Хороший пример четырёхпоточной проги - SMP-Slient F@H, одна work unit обрабатывается 4-мя параллельно работающими процессами, наибольшая скорость вычислений получается при привязывании каждого процесса к отдельному ядру 4-хъядерного процессора - так оптимальнее всего используется кэш.
#61 
Murr коренной житель19.11.09 02:42
Murr
NEW 19.11.09 02:42 
in Antwort M.H. 19.11.09 02:10
Ой, как сложно!!!
Я то всего лишь предлагал убить System Idle Process, пожирающий до 99% процессорного ресурса компа...
#62 
  M.H. Водяной19.11.09 02:56
NEW 19.11.09 02:56 
in Antwort Murr 19.11.09 02:42
А чёрт, а я и не допёр
#63 
megabyte постоялец19.11.09 06:37
megabyte
NEW 19.11.09 06:37 
in Antwort Murr 19.11.09 00:05
Задание в интерпретации топикстартера звучит
В ответ на:
Помогите ответить на вопросы по операционной системе: нужно два примера, когда многопоточность в ОС увеличивает производительность программы, по сравнению с однопоточностью, и два примера, когда многопоточность не увеличивает производительность программы по сравнению с однопоточностью.

Ваш ответ
В ответ на:
Дело в том, что он сравнивает разные по фукциональности задачи:
- расчет _и вывод на экран_
- расчет _только_
такое сравнение просто не корректно. Корректным было бы сравнивать производительность двух програм - решающих одну и ту же задачу (имеющих одну и ту же, в том числе и бесполезную, функциональность), но реализованных в форме одного и нескольких потоков.

В задании я не вижу слов "сравнение", "сравнить" и пр. синонимы. Надо предоставить 4-е примера. Все. Что делают потоки и какая у них должна быть функциональность ни слова, поэтому ответ-намек проподавателя формально (см. ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0...) корректен.
Слова "формально" и "принципиально" - не антонимы, так же как "кисло" и "мягко".
#64 
Murr коренной житель19.11.09 15:30
Murr
NEW 19.11.09 15:30 
in Antwort megabyte 19.11.09 06:37
два примера, когда многопоточность не увеличивает производительность программы по сравнению с однопоточностью.
-----
так же как "кисло" и "мягко".
-----
Смотри первую из хохм.
Утверждение же преподавателя можно, формально, перефразировать так: Программа с урезанной функциональностью имеет более высокую производительность в части не исключенной из программы. Что вполне корректно.
Однако в контексте же перефразированного ответа преподавателя вполне уместно задать вопрос об том, как правильно рассчитать суммарную производительность, включая производительность исключенной части, системы? Данный вопрос так же корректен, но меняет оценку певоначального утверждения на противоположную, т.к. исключенная часть имеет оценку времни выполнения как бесконечность.
Так что оценка (или сравнение) производительности имеет смысл только при полностью эквивалентной функциональности. В свете примера, данного преподавателем, основной и единственный поток должен осуществлять поминутный вывод на экран и рассчет - тогда можно корректно оценить насколько дополнительный поток "НЕ УВЕЛИЧИВАЕТ" производительность программы.
Думаю, что он умрет (в смысле производительности) на поолинге таймера. По крайней мере у меня, при необходимости обеспечить точность не хуже -5/+10 тиков, поолинг таймера в однопоточной системе легко "съедал" до 20% выч.ресурса... а выполняся по нему именно вывод на экран.
#65 
JESSIKA2004 местный житель19.11.09 22:43
JESSIKA2004
NEW 19.11.09 22:43 
in Antwort Murr 19.11.09 15:30
Люди, в общем, я запуталась окончательно(( Я себя таким глухим тетеревом чувствую((
#66 
Murr коренной житель19.11.09 23:14
Murr
NEW 19.11.09 23:14 
in Antwort JESSIKA2004 19.11.09 22:43
Ну мы, вообще-то, специально говорили простым языком и не пользовались
никакими математическими сложностями...
#67 
megabyte постоялец20.11.09 07:58
megabyte
NEW 20.11.09 07:58 
in Antwort Murr 19.11.09 15:30
В ответ на:
два примера, когда многопоточность не увеличивает производительность программы по сравнению с однопоточностью.
-----
так же как "кисло" и "мягко".
-----
Смотри первую из хохм.
Ваш текст выше мне непонятет. Выглядит как вырывание выражения из контекста.
В ответ на:
Утверждение же преподавателя можно, формально, перефразировать так: Программа с урезанной функциональностью имеет более высокую производительность в части не исключенной из программы. Что вполне корректно.
Некорректно.
Обозначим производительнось однопоточной программы ака "Программа с урезанной функциональностью" как П1, а многопоточной программы как П2. Тогда вторую часть вопроса
В ответ на:
когда многопоточность не увеличивает производительность программы по сравнению с однопоточностью.
записывается как П2 <= П1. Т.е. выражение "не увеличивается" означает, что производительсть обеих программ может быть равна (П2 == П1) и неравенство останеться истинным.
Фраза
В ответ на:
Программа с урезанной функциональностью имеет более высокую производительность в части не исключенной из программы.
записывается как П1 > П2. Вы осознанно или неосознанно выбрасываете знак равенства из вопроса. Формально-корректное перефразирование звучит как "Программа с урезанной функциональностью имеет равную или большую производительность в части не исключенной из программы."
Поэтому формально пример преподавателя корректен.
#68 
megabyte постоялец20.11.09 21:49
megabyte
NEW 20.11.09 21:49 
in Antwort Murr 19.11.09 15:30
Ваша цитата
В ответ на:
Формально он прав.
-----
Он принципиально не прав. См. выше.

Моя цитата
В ответ на:
Слова "формально" и "принципиально" - не антонимы, так же как "кисло" и "мягко".

Я вырвал из контекста слова "формально" и "принципиально", что есть неправильно. Признаю некорректрость сего "вырывания". Предлагаю больше не дискутировать на эту тему и продолжить дискуссию на тему "преподаватель формально прав или преподаватель принципиально неправ".
#69 
  anatoli888 старожил20.11.09 23:24
NEW 20.11.09 23:24 
in Antwort JESSIKA2004 16.11.09 12:32, Zuletzt geändert 20.11.09 23:37 (anatoli888)
ну примеры простые
1. если потоки произошедшие от одного процесса не имеют точек пересечения, т.е. к примеру имеют каждый свою область вычсления, то такой процесс будет работать быстрее чем процесс состояший из одного потока.
пример из жизни. по двухполосной трассе запускают 1000 грузовиков. трасса разделяется на 3 двухполосных ответвления не пересекающиеся между собой и приводящие к одной цели. логично что в таком случае грузовики приедут быстрее чем если бы они все ехали по сплошной однополосной трассе.
2. если потоки произошедшие от одного процесса используют к примеру один и тот же источник информации, т.е. должны ждать друг друга (я не имею ввиду deadlock. я имею ввиду пример когда они ждут сравнительно дольше), то такой процесс будет работать медленее чем процесс состоящий из одного потока.
тот же пример но с 100 перекрестками. я думаю вы поняли о чем я говорю.
программки сами подберите или придумайте что нить.
меня передергивает от перевода поток. поток для меня это stream. thread как то не вписывается в это понятие потока
#70 
Murr коренной житель21.11.09 11:35
Murr
NEW 21.11.09 11:35 
in Antwort megabyte 20.11.09 07:58
Некорректно.
-----
Корректно. В любом случае при доступной константной вычислительной мощности Р и распределении ее на Р1.1 + Р1.2 или направлении полностью на Р2.1, Р2.1 будет больше Р1.1, при условии что Р1.2 не ноль... Если же Р не постулируется константной, то говоритьб об корректности бессмысленно...
как П2 <= П1.
-----
На деле все несколько по-другому:
имеется задача З1, состоящая из выполнения работ P1.1 (расчет) + P1.2(отрисовка)
имеется задача З2, состоящая из выполнения работ Р2.1 (расчет и P'2.2 - не имплементировано)
Утверждается, что:
Р2.1 == Р1.1 (тождественно равны) и
Р2.1 будет выполнена не медленнее (быстрее) P1.1 или (к3 * Р2.1) <= (k1 * P1.1), что верно.
Но не верно, что З2 выполнит работы не медленнее (быстрее) З1.
Т.е. хотя утверждение (к1 * P2.1) <= (k3 * P1.1) - верно,
но(!) оценка должна делаться не для пары P1.1\P2.1, для пары З1\З2
где З1 = k1 * P1.1 + k2 * P1.2
и З2 = к3 * Р2.1 + к4 * P'2.2
и к1-к3 - конечны, а к4 - бесконечен т.к. З2 не может выполнить P'2.2,
и утверждение З2 <= З1 - не верно.
Субъекивная же оценка же преподавателем Р1.2 как "ненужное" и последующая подмена пары З1\З2 на Р1.1\Р2.1 - всего лишь ложная посылка, приводящая к неправильной оценке.
Для правильного сравнения нужно обеспечить в З2 имплементацию Р'2.2 (и обеспечить == Р1.2), что сделает к4 конечным и позволит корректно сравнивать производительность З2 в отношении З1.

Вы осознанно или неосознанно выбрасываете знак равенства из вопроса.
-----
В данном случае он не принципиален, ибо проблема совешенно в другом.
Но Я согласен с поправкой - больше или равно (=>) будет точнее.
Еще раз - оно не столь приципиально как замена З1\З2 на Р1.1\Р2.1
Поэтому формально пример преподавателя корректен.
-----
Нет. Замени отрисовку на экране записью в файл (функциональность Р*.2 не принципиальна) и затребуй оный по окончании работы программы. И не важно, что в нем содержится, важно что временем выполнения задачи будет время создания файла второй задачей... А ненужность этого файла - вопрос чисто субъективный.
#71 
Murr коренной житель21.11.09 11:43
Murr
NEW 21.11.09 11:43 
in Antwort anatoli888 20.11.09 23:24
меня передергивает от перевода поток. поток для меня это stream.
thread как то не вписывается в это понятие потока
-----
Это терминология. Типа по морю - ходят.
Стриам обычно в контексте ввод/вывод, а треад - паралельная задача.
Тут еще стоит пожаловаться на мультитрединг как на рапределенные системы...
Но и это пустяки, если конечно не переводить дословно на интервью...
#72 
Murr коренной житель21.11.09 12:10
Murr
NEW 21.11.09 12:10 
in Antwort anatoli888 20.11.09 23:24
логично что в таком случае грузовики приедут быстрее чем если бы они все ехали по сплошной однополосной трассе.
-----
Не логично.
Логично, что без надлежащего управления все грузовики будут продолжать ехать по той же трассе и приедут в тоже время.
Так же логично, что кто-то, скорее всего - первый, должен остановиться на развилке и направить каждый грузовик на его трассу.
Ну и совсем логично, что тот, кто будет разруливать ситуацию приедет последним - т.е. позднее, чем если бы он просто ехал.
Т.е. при описанной схеме грузовики, при зачете по последнему, приедут медленнее...
Задачу Я правда извратил. Для правильного понимания нужно ввести много груза, много грузовиков, некоторое количество полос, сколько-то водителей и оценку в тонно-километрах. Тогда модель будет более правильной. Но даже в этом случае не гарантируется, что не будет существовать более эффективного (однотредного) решения, чем то, которое предложит диспетчер.
#73 
megabyte постоялец21.11.09 19:00
megabyte
NEW 21.11.09 19:00 
in Antwort Murr 21.11.09 11:35
Все. Понял. Согласен. Был неправ.
Поясненая для автора топика. Если она еще читает его. Пример препа
В ответ на:
вы вводите данные, в фоновом режиме идут расчеты, а Вам через каждую минуту выводится окно на экран с промежуточными вычислениями, значения которых Вам не нужны, а нужен лишь конечный результат. Явно от такой многопоточности производительность не повысится.

Рассматривается компьютер имеющий два или более ЦПУ.
Допустим что:
- задание выполняется 10 минут (т1).
- вывод одного промежуточного значения на экран 0.01 сек. За минут на вывод будет затрачено 0.01 * 10 = 0.1 сек (т2)
При одном потоке время затраченное на выполнение задания и вывод на экран составит т1 + т2.
При двух потоках время затраченное на выполнения задания и вывод на экран составит время самого медленного потока плюс время на синронизацию данных (т3) - т1 + т3. Что есть "время на синронизацию данных"? Есть область в памяти, которая хранит промежуточные результаты. Когда рабочий поток записывает данные в эту область, а параллельно поток вывода на экран пытается считать эти данные, то один из потоков должен ожидать окончание операции чтения/записи конкурирующим потокм. т3 < т2, т.к. вывод на экран заведомо медленее синхронихации, потому что вовлекает в себя исполнение промежуточного кода (драйвер видеокарты) и осуществляется используя более медленные шины данных. Блокировка памяти осуществляется процессором аппаратно.
Получается
т1 + т2 (один поток) > т1 + т3 (два потока)
и пример преподавателя не является примером, когда ворой поток не увеличивает производительность.
Преподаватель может возражать тем, что
- время на затраченно на вывод пренебрежительно мало в сравнеии с временем выполнения задание. Возражение препу - не важно насколько оно мало, но оно существует и отлично от нуля.
- в условии второго задания нет утверждения, что компьютер во втором случает имеет один ЦПУ. Преп - редкостная редиска.
to Murr: Спасибо за интересную и конструктивную дискусию.
#74 
Murr коренной житель22.11.09 00:15
Murr
NEW 22.11.09 00:15 
in Antwort megabyte 21.11.09 19:00
Спасибо за интересную и конструктивную дискусию.
------
Гы? Дискуссии то собственно не было. Просто изложил в доступной форме азы
одного из моих образований - Инженер-системотехник...
Правда стоило перевести в матричную форму - там оно по-проще в пояснениях...
при владении соответствующим мат.аппаратом...
#75 
  anatoli888 старожил22.11.09 01:55
NEW 22.11.09 01:55 
in Antwort Murr 21.11.09 12:10
я грубо представил. естественно что что не бывает в данном случае совершенной модели. именно по этому и бывают перебои сигналов на линиях электричек итп. все предусмотреть не возможно. особенно в реальной жизни.
пример был выбран для наглядности и я надеюсь что содатель топика смог понять смысл моего примера.
#76 
1 2 3 4 alle