Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Я прочитал, что в плюсах нет своего многопоточного программирования и поэтому плюсы это просто враппер над многопоточностью, которую предоставляет ось. Вопрос: если для решения задачи, такой как распарсивание гигабайтов текста параллельным методом уже написана утилита, которая может быть запущена в количестве процессов равное числу ядер сервера минус один или два (например два проца по 8 ядер, то запускаем 14-15 процессов), то есть ли хоть малейший смысл заморачиваться в этом случае с написанием многопоточного функционального попила внутри каждого процесса или если речь идет об обработке текста, которая тупо жрет проц и из сервисов системы использует только файловый ио, то может быть конкретно в данном случае заморачиваться с мультитредингом это лишнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 00:27 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Дело в том что С++ как язык не владеет объектами мультитрединга или мультипроцессности. Они - это скорее API конкретной ОС или платформы. Тоесть 90% успеха твоего мероприятия зависит от того под ЧТО ты будешь кодить распарсивание гигабайтов. Windows или Linux. Там эти вещи довольно по разному реализованы. Поэтому определяйся сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 01:32 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
LumixЯ прочитал, что в плюсах нет своего многопоточного программирования и поэтому плюсы это просто враппер над многопоточностью, которую предоставляет ось. Нет. В стандарте C++11 уже больше года поддерживаемом всеми компиляторами есть потоки. Lumix конкретно в данном случае заморачиваться с мультитредингом это лишнее? Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 01:55 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
вау а сколько памяти жрет? 14-15 процессов в своп не уйдудт? у меня есть что-то подобное. "утилита" 3Гб запросто отъедает, тогда как исходный текст - полгига 4 штучки запустил и хватит. правда, у меня и ядер больше нет зы. гипертдейдинг отключи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 03:46 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Осмелюсь высказать догадку: процесс жрёт больше ресурсов, чем поток? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 08:32 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
LumixЯ прочитал, что в плюсах нет своего многопоточного программирования и поэтому плюсы это просто враппер над многопоточностью, которую предоставляет ось. Начнем с того, что это уже не так. В последнем стандарте в C++ появилась уже встроенноая поддержка многопоточного программирования. http://en.wikipedia.org/wiki/C 11#Threading_facilities ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 10:41 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Lumix Вопрос: если для решения задачи, такой как распарсивание гигабайтов текста параллельным методом уже написана утилита, которая может быть запущена в количестве процессов равное числу ядер сервера минус один или два (например два проца по 8 ядер, то запускаем 14-15 процессов), то есть ли хоть малейший смысл заморачиваться в этом случае с написанием многопоточного функционального попила внутри каждого процесса или если речь идет об обработке текста, которая тупо жрет проц и из сервисов системы использует только файловый ио, то может быть конкретно в данном случае заморачиваться с мультитредингом это лишнее? Это тебе никто не скажет, это целиком зависит от конкретики твоей этой задачи парса текста. В общем случае преимущество потоков передо процессами в том, что потоки могут без усилий использовать общие данные, в случае процессов на это нужно тратить дополнительные достаточно серьёзные усилия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 10:45 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
defragmentatorОсмелюсь высказать догадку: процесс жрёт больше ресурсов, чем поток? Это неправильная догадка. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 11:24 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
MasterZivLumixЯ прочитал, что в плюсах нет своего многопоточного программирования и поэтому плюсы это просто враппер над многопоточностью, которую предоставляет ось. Начнем с того, что это уже не так. В последнем стандарте в C++ появилась уже встроенноая поддержка многопоточного программирования. http://en.wikipedia.org/wiki/C 11#Threading_facilities Да я в курсе за эту шнягу. Но я нигде не могу найти (в том числе по этой ссылке), информацию, что эта многопоточность не использует нативные потоки операционной системы, то есть не является враппером. Максимум, что я нашел это фразу типа "многопоточность в ++11 встроена в ядро плюсов", но значит ли это что теперь это никак не связано с потоками операционной системы я пока пруф найти не могу. MasterZivВ общем случае преимущество потоков передо процессами в том, что потоки могут без усилий использовать общие данные, в случае процессов на это нужно тратить дополнительные достаточно серьёзные усилия. Понятно. Значит в нашем случае многопоточность дело лишнее, потому что у нас общие данные и так используются без усилий. Эту безусильность гарантирует менеджер пула процессов. А что касается запись в общий файл, то у нас используется фишка из фрилока: если занято усни, а потом попробуй снова. PS. Кстати, именно на основе этого критерия я сегодня утром посоветовал чуваку вот тут 14691640 решить его задачу как раз многопоточно, а не многопроцессово. Хотя у него там питон, а я не в курсе как питон работает с многопоточностью... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 11:29 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
С точки зрения bash(Unix),cmd(Win) на процессах оно поухватистее будет. Поюзабельнее. Поскольку из таск-менеджера или из top видна статистика процессов то ими можно манипулирновать, создавать, убивать менять приоритеты, посылать сигналы, организовывать конвееры и батчи и прочие админские штуки. Тоесть очень много пространства для манёвра. С потоками такое сделать будет нетривиально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 11:39 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
maytonС точки зрения bash(Unis),cmd(Win) на процессах оно поухватистее будет. Поюзабельнее. Поскольку из таск-менеджера или из top видна статистика процессов то ими можно манипулирновать, создавать, убивать менять приоритеты, посылать сигналы, организовывать конвееры и батчи и прочие админские штуки. Тоесть очень много пространства для манёвра. С потоками такое сделать будет нетривиально. Чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 15:53 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
MasterZivmaytonС точки зрения bash(Unis),cmd(Win) на процессах оно поухватистее будет. Поюзабельнее. Поскольку из таск-менеджера или из top видна статистика процессов то ими можно манипулирновать, создавать, убивать менять приоритеты, посылать сигналы, организовывать конвееры и батчи и прочие админские штуки. Тоесть очень много пространства для манёвра. С потоками такое сделать будет нетривиально. Чего? maytonС точки зрения bash(Unix),cmd(Win) на процессах оно поухватистее будет. Поюзабельнее. Поскольку из таск-менеджера или из top видна статистика процессов то ими можно манипулирновать, создавать, убивать менять приоритеты, посылать сигналы, организовывать конвееры и батчи и прочие админские штуки. Тоесть очень много пространства для манёвра. С потоками такое сделать будет нетривиально. я подозреваю что у тс 100% утилизация процессора эти танцы с бубном тут ничем не помогут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 16:03 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
LumixДа я в курсе за эту шнягу. Но я нигде не могу найти (в том числе по этой ссылке), информацию, что эта многопоточность не использует нативные потоки операционной системы, то есть не является враппером. Максимум, что я нашел это фразу типа "многопоточность в ++11 встроена в ядро плюсов", но значит ли это что теперь это никак не связано с потоками операционной системы я пока пруф найти не могу. Потоки в любых языках программирования не работают без участия операционной системы. Потому что то, что работает без участия операционной системы называется по-другому. Фиберы, гринтреды, ещё как... Одно не понятно -- чем тебе так мешает участие операционной системы. Для справки -- в диспетчеризации процессов ОС участвует ровно так же, как и в диспетчеризации потоков, только стоимость переключения контекста дороже. LumixПонятно. Значит в нашем случае многопоточность дело лишнее, потому что у нас общие данные и так используются без усилий. Эту безусильность гарантирует менеджер пула процессов. А что касается запись в общий файл, то у нас используется фишка из фрилока: если занято усни, а потом попробуй снова. Что-то мне намекает на то, что именно потоки-то вам и нужны. Но тебе виднее. Вообще, многозадачность на процессах уже сейчас (я считаю) -- пережиток прошлого. По одной простой причине -- потоки могут разделять ресурсы, а процессы -- нет. Процессы обладают только одним достоинством -- они более безопасны, если гикнется, то умрёт только этот процесс, остальные выживут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 16:05 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
MasterZivВообще, многозадачность на процессах уже сейчас (я считаю) -- пережиток прошлого. По одной простой причине -- потоки могут разделять ресурсы, а процессы -- нет. Процессы обладают только одним достоинством -- они более безопасны, если гикнется, то умрёт только этот процесс, остальные выживут. примитивная аргументация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 16:49 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Изопропилпримитивная аргументация Примитивная аргументация о примитивной аргументции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 18:03 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
MasterZivОдно не понятно -- чем тебе так мешает участие операционной системы. Для справки -- в диспетчеризации процессов ОС участвует ровно так же, как и в диспетчеризации потоков, только стоимость переключения контекста дороже. Я мыслю так: если у плюсов под капотом работа оси, то для нашего случая теряется разница между процессами и потоками. Или можно ещё так сказать: если бы у плюсов были бы свои треды, которые работают много быстрее тредов оси, тогда был бы смысл переделывать на мультитреды. LumixВообще, многозадачность на процессах уже сейчас (я считаю) -- пережиток прошлого. Соображения, почему решение на процессах пока ещё живы. 1) младшие кодеры часто совершают ошибки с нарушением атомарности при реализации многотредовых систем, а при организации параллели на процессах эту атомарность обеспечивает ось. мультитредовый код сложнее читать и он более error prone 2) самый вкусный мультитредовый эффект это так называемое функциональное распараллеливание, а не распараллеливание данных, ну например, рендер в одном потоке, логика в другом, ио в третьем. В этом случае если кто-то начинает много что-то обсчитывать, то по крайней мере юзеринтерфейсы не подвисают, а просто показывают статусы 3) параллель во многом это архитектурное решение, там организация получается более слоисто-списковая и в итоге все сводится к менеджеру и воркерам, а их проще понимать как две разные утилитки: распил, обсчет, премерж ака синхрон ака докрутка, мерж Поскольку в нашем случае никакого функционального разделения нет, а задача 100% на дата-декомпозите, то и построение на процессах канает. Создавая тему, я пытался проверить, а можно ли на тредах выжать ещё больше производительность, но если треды и процы различаются только меморишарингом, то решение на процах пусть и остается. В итоге зачем я открывал тему, я все ответы получил. LumixПо одной простой причине -- потоки могут разделять ресурсы, а процессы -- нет. Единственная причина которую я встречал в своей практике, где реально важен меморишаринг, это какая-то супержирная дата, которую дорого капусулить в сервис, ну например, какой-нибудь look-up на 1,5 Гб. Все остальные кейсы которые мне встречались сводились к организации общения через третье лицо, например, через файл, через базу, через сервер. LumixПроцессы обладают только одним достоинством -- они более безопасны, если гикнется, то умрёт только этот процесс, остальные выживут. Ещё достоинства есть. 1) исчезает вопрос с контролем атомарности => проще разработка 2) управление нагрузкой может осуществлять сисадмин стандартными средствами оси, нет надобности мутить свои балансеры - - - - - - - - - - - - - - - PS. узнал для себя новое слово - гинуться. первый раз встречаю, чтобы гиком называли доходягу))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2013, 22:13 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Lumix, мыслю так: если у плюсов под капотом работа оси, то для нашего случая теряется разница между процессами и потоками. Или можно ещё так сказать: если бы у плюсов были бы свои треды, которые работают много быстрее тредов оси, тогда был бы смысл переделывать на мультитреды. А я мыслю так, что ты мыслишь неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 00:09 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Lumix, Вот вроде бы и правильно всё пишешь, а всё получается как-то не так. С чего ты взял, что существуют какие-то такие волшебные "потоки вне ОС", которые должны быть быстрее потоков обычных? Что за такие турбореактивные потоки должны быть? С чего им быть быстрее? Поток -- это набор комманд, который исполняется. Он исполняется одинаково быстро как под управлением ОС, так и без неё. Выполняет её процессор, там всё равно, ОС участвует или нет. Когда ОС участвует, это прерывание, по истечении кванта времени, выделенного на данный поток или процесс, потоки и процессы в этом плане равнозначны, что поток прерывается, что процесс. Что отличается, так если ранее процессор занимал другой процесс, нежели тот, который приходит в процессор, то будет переключение контекста на другой процесс. Если нет, а это был другой поток этого же процесса -- не будет переключения. Правда, в процессоре был тред другого процесса, тоже будет переключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 00:53 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
MasterZivС чего ты взял, что существуют какие-то такие волшебные "потоки вне ОС", которые должны быть быстрее потоков обычных? Ну вот так подумал, а вдруг такое есть. Создал тему. Оказалось, что этого нет. Вопрос закрыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 10:23 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
MasterZivПроцессы обладают только одним достоинством -- они более безопасны, если гикнется, то умрёт только этот процесс, остальные выживут. Я это и имел в виду когда писал про юзабельность процессов. А ты что спросил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 12:37 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
LumixСоздавая тему, я пытался проверить, а можно ли на тредах выжать ещё больше производительность, но если треды и процы различаются только меморишарингом, то решение на процах пусть и остается. В итоге зачем я открывал тему, я все ответы получил. Кстати, а кто в курсе, если одна и та же функция используется в разных процессах, то код этой функции копируется или размещается в разделяемой памяти и используется оттуда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 12:58 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
если утилита есть и задачу выполняет, то заморачиваться нет смысла. если задачу не выполняет - на вещи надо смотреть ширше. Допустим, есть у вас этиваши 15 потоков. А диск вообще справится с одновременным чтением в такое кол-во потоков? Конечно в общем случае это зависит от задачи, но если полагать что каждый из 15 потоков делает последовательное чтение, мне кажется hdd перосто уйдет в сплошной seek, а ssd довольно сильно поплохеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 13:13 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
chabapokа ssd довольно сильно поплохеет. Прошу уточнить термин поплохеет для ssd, потому что у нас серваки как раз на ssd. У них реально резко сильно вырастает физический износ??? или под поплохеет имеется ввиду 100% нагрузка в течение очень долгого времени? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 14:05 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
та же функция в разных процессахКстати, а кто в курсе, если одна и та же функция используется в разных процессах, то код этой функции копируется или размещается в разделяемой памяти и используется оттуда? Разделяемый, при условии, что EXE/DLL, в которой находится этот код была загружена по одинаковому адресу (в виртуальном адресном пространстве процесса). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 14:07 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
jmp_originalта же функция в разных процессахКстати, а кто в курсе, если одна и та же функция используется в разных процессах, то код этой функции копируется или размещается в разделяемой памяти и используется оттуда? Разделяемый, при условии, что EXE/DLL, в которой находится этот код была загружена по одинаковому адресу (в виртуальном адресном пространстве процесса). То есть вы получается утверждаете две интересные вещи 1) не всегда DLL означает загрузку функции один раз и если DLL загружается не операционной системой, а из кода вручную (аналог создания на куче), то такое "ручное" подсоединение DLL создаст столько же копий, сколько и процессов 2) что ось не оптимизирует память даже если чексум вновь исполняемого файла равняется чексуму уже находящихся в исполнении файлов так-то странно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2013, 14:16 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=73&tid=2020036]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
97ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 186ms |

| 0 / 0 |
