Ежедневно мутя с потоками, такая радость, их заменить на процессы с общей памятью, не так просто приходит в голову. Лучше сразу убиццо апстену. Деформация такая. Тупеем потихоньку.StrangerR wrote: Да нет, тред легко заменяется процессами с общей памятью. По сути это почти одно и тоже, с некоторыми отличиями (у тредов общего больше чем просто общая память данных при самостоятельной памяти стеков).
Миф: как IBM победил БЭСМ
-
- Уже с Приветом
- Posts: 9195
- Joined: 04 Mar 2011 03:04
- Location: SFBA
Re: Миф: как IBM победил БЭСМ
... and even then it's rare that you'll be going there...
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: Миф: как IBM победил БЭСМ
Ну вот Оракл по моему написан большими процессами с общей памятью. Но на запуск большого процесса overhead больше
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Re: Миф: как IBM победил БЭСМ
Это потому, что во-первых, MS SQL и так работал с "настоящими" threads, как если бы они были почти "fibers", во-вторых, они имеют смысл для очень высокопроизводительных сценариев (много процессоров, много их утилизации). Ну и таки да, ошибки были - и в MS SQL и в библиотеке файберов в ОС.Dmitry67 wrote:Кстати, когда то попробовал в ms sql "fibers". Разницы не почувствовал, разве что перестали работать distributed transactions
Cheers
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Re: Миф: как IBM победил БЭСМ
Это уже давно не совсем так у Оракла.Dmitry67 wrote:Ну вот Оракл по моему написан большими процессами с общей памятью.
Cheers
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: Миф: как IBM победил БЭСМ
Угу, но начинали они по моему с этого.
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Re: Миф: как IBM победил БЭСМ
Yes, indeed.Dmitry67 wrote:Угу, но начинали они по моему с этого.
Cheers
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: Миф: как IBM победил БЭСМ
Хотелось бы вернуться к нашим баранам. Как я говорил, в бэсм была очень неудобная работа со строками. А как в эльбрусе? Там ведь тоже только огромные слова адресуются вроде бы
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 15311
- Joined: 30 Apr 2003 16:43
Re: Миф: как IBM победил БЭСМ
Мне об этом ничего не известно. Поделитесь откуда дровишки.Dmitry67 wrote:....
А сейчас threads на z/OS конечно есть, в виртуалках
...
Сочетание z/OS и виртуалки тоже режет слух мне, системному прогаммисту z/OS. Поясните что имелось Вами в виду.
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: Миф: как IBM победил БЭСМ
Ну так в виртуалках у вас юникс, правильно?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 38016
- Joined: 14 Dec 2006 20:13
- Location: USA
Re: Миф: как IBM победил БЭСМ
Вот еще по Эльбрусу. Эль-76 - Ада+Java в одном флаконе, в 70-е годы, с полной динамикой объектов.
http://forum.oberoncore.ru/viewtopic.ph ... 3&start=60
http://forum.oberoncore.ru/viewtopic.ph ... 3&start=60
-
- Уже с Приветом
- Posts: 15311
- Joined: 30 Apr 2003 16:43
Re: Миф: как IBM победил БЭСМ
Да туману вы здесь по поводу thread нагнали много. И никто не привел ни одного определения. Я пока буду (если вы не возражаете) понимать это как:
На МФ для этого используется два механизма - создание такого же unit of work как и основная задача (TCB), и SRB, о котором я уже говорил (не совсем корретно честно говоря). SRB - это облегченный вариант TCB с некоторыми ограничениями (например в них не допускаются операции ввода выводы и обращения к супервизору т.е. SVC (API по вашему). Т.е. строго говоря SRB не есть средство доступное бизнес программистам и вряд ли доступно на языках высокого уровня. Это среддтво для системного програмирования только. Таким образом на МФ есть один единый способ распаллеливания задачи - это создание новых задач, с точки зрения системы таких же как и основная.Multithreading is the ability for a program to multitask within itself. The program can split itself into
separate "threads" of execution that also seem to run concurrently. This concept might at first seem
barely useful, but it turns out that programs can use multithreading to perform lengthy jobs in the
background without requiring the user to take an extended break away from their machines. Of course,
sometimes this may not be desired: an excuse to take a journey to the watercooler or refrigerator is
often welcome! But the user should always be able to do something on the machine, even when it's
busy doing something else.
-
- Уже с Приветом
- Posts: 15311
- Joined: 30 Apr 2003 16:43
Re: Миф: как IBM победил БЭСМ
Dmitry67 wrote:Ну так в виртуалках у вас юникс, правильно?
Линукс на виртуалках созданных z/VM выполняется. А в z/OS есть Юникс и не на виртуалке а как неотемлимая часть ядра системы. MVS и Юникс в z/OS образуют одно целое и могут использоваться одновремено одной и той же программой. При этом программы могут запускатьися как MVS так и Юникс программы. E'to sovershenno ravnoznachno. Я могу, например, запистить ftp в TSO, или из Юникса. Работать будет одинаково.
-
- Уже с Приветом
- Posts: 38016
- Joined: 14 Dec 2006 20:13
- Location: USA
Re: Миф: как IBM победил БЭСМ
Это до сих пор почти так. А начиналось с _только так_.tengiz wrote:Это уже давно не совсем так у Оракла.Dmitry67 wrote:Ну вот Оракл по моему написан большими процессами с общей памятью.
Для программы вообще почти без разницы. Для ОС - треды имеют меньше повторяющейся информации, и по сути это та же общая память но с разделением системной информации о процессах (все треды по сути - процессы, у которых однако общий контекст вроде доступа, внешних объектов, прав, ексепшенов, и вся память shared но стеки в разных местах).
-
- Уже с Приветом
- Posts: 38016
- Joined: 14 Dec 2006 20:13
- Location: USA
Re: Миф: как IBM победил БЭСМ
А там же нет ассемблера а только языки уровня жавы и выше (по сути Эль 76 - смесь Алгола 68 и Ады). Плюс теги. Вполне там удобно все могло программироваться, как я понимаю.Dmitry67 wrote:Хотелось бы вернуться к нашим баранам. Как я говорил, в бэсм была очень неудобная работа со строками. А как в эльбрусе? Там ведь тоже только огромные слова адресуются вроде бы
Ссылку я вроде уже кидал, там и примеры есть
http://forum.oberoncore.ru/viewtopic.ph ... 3&start=60
Code: Select all
для i от 2 до n
цикл
ф64 x;
x := a[0] := a[i];
до найденменьшеx
для j от i - 1 вниздо 0
цикл
если a[j] <= x то найденменьшеx!(j)
иначе a[j+1] := a[j]
всё
повторить
при
найденменьшеx(k): a[k+1] := x
всёсит
повторить
-
- Уже с Приветом
- Posts: 38016
- Joined: 14 Dec 2006 20:13
- Location: USA
Re: Миф: как IBM победил БЭСМ
Чувствуется, что писалось сразу после _замутнения потоков_.Medium-rare wrote:Ежедневно мутя с потоками, такая радость, их заменить на процессы с общей памятью, не так просто приходит в голову. Лучше сразу убиццо апстену. Деформация такая. Тупеем потихоньку.StrangerR wrote: Да нет, тред легко заменяется процессами с общей памятью. По сути это почти одно и тоже, с некоторыми отличиями (у тредов общего больше чем просто общая память данных при самостоятельной памяти стеков).
На самом деле если компилятор поддерживает, то разницы почти никакой. Вот для ОС разница есть, для процессов куда больше информации надо хранить. Но речь не про то, а про факт, что асинхронные обработки начинались с мульти-процессов с разделяемой памятью а потом плавно перетекли в треды.
-
- Уже с Приветом
- Posts: 38016
- Joined: 14 Dec 2006 20:13
- Location: USA
Re: Миф: как IBM победил БЭСМ
Потому что это абсолютно независимые понятия. Тред на процессорах - означает что там можно создать несколько КОНТЕКСТОВ и процессор будет делать вид, что у него больше коров чем на самом деле. Экономия будет на переключении контекстов а возможно еще на том что какие то элементы процессора могут раздельно использоваться разными тредами.zVlad wrote:А почему же тогда в списке параметров неких процессоров приводится число этих самых threads?Palych wrote:zVlad, по-моему Вы что-то путаете.
Threads работают без аппаратной поддержки где угодно.
Это всего лишь абстракция...
Тред в процессе - как правило просто
- общая память (вся)
- стек в другом месте
- отдельный контекст для исполнения на процессоре
Никакой связи между тредами в корове и тредами в процессе нету, кроме некоторой схожести части понятий.
Это не так точнее совсем не такПереключение между "процессами" и "потоками" (или "нитями" или "легкими процессами") стоит примерно одинаково.
Переключение процесса
- полностью поменять меппинг памяти (ну да, в новом часть может совпадать если там шеред сторейдж)
- поменять контекст прав доступа
- поменять контекст внешних объектов (fd и прочего)
- взять регистры и прочее для процесса включая положение стека
- запуститься
Переключение треда
- взять регистры для процесса, выставить новое положение стека
- запуститься
Намного меньше так как не меняется меппинг памяти, права и внешние объекты.
-
- Уже с Приветом
- Posts: 15311
- Joined: 30 Apr 2003 16:43
Re: Миф: как IBM победил БЭСМ
Спасибо. Я тоже склонялся к токому же обьяснению. Теперь все вроде сходится - просто использовали одно слово в разных фирмах вложив в него разный смысл. А интерeсно все таки - ОС в курсе threads процессора или это ей не доступно знать и использовать? Логично было бы предположить что это недоступно ОС хотя ....StrangerR wrote:Потому что это абсолютно независимые понятия. Тред на процессорах - означает что там можно создать несколько КОНТЕКСТОВ и процессор будет делать вид, что у него больше коров чем на самом деле. Экономия будет на переключении контекстов а возможно еще на том что какие то элементы процессора могут раздельно использоваться разными тредами.zVlad wrote:....
А почему же тогда в списке параметров неких процессоров приводится число этих самых threads?
....
Никакой связи между тредами в корове и тредами в процессе нету, кроме некоторой схожести части понятий.
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: Миф: как IBM победил БЭСМ
Ну так понятно что на языке пишется a = b[j];
Но если для каждого a i делится на число символов в слове, читается слово, нужный байт побитно сдвигатся и выделяется, а при записи еще сложнее, то вы представляете какой overhead?
Но если для каждого a i делится на число символов в слове, читается слово, нужный байт побитно сдвигатся и выделяется, а при записи еще сложнее, то вы представляете какой overhead?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 2085
- Joined: 14 Sep 2013 13:07
Re: Миф: как IBM победил БЭСМ
Там основной выигрыш через "memory bank interleaving": если у вас - несколько "банков памяти".StrangerR wrote:Переключение треда
- взять регистры для процесса, выставить новое положение стека
- запуститься
Намного меньше так как не меняется меппинг памяти, права и внешние объекты.
Процессор-то имеет тактовую частоту сколько-то гигагерц, а память - сколько-то сотен мегагерц. Процессор просто "ждёт" память на каждой команде.
Если память нарезана на bank0, bank1, и так далeе (физически - каждый банк под своим независимым управлением мемори-контроллера), то разные банки работают одновременно. Шина адреса и шина данныx - одна, но память с ней работает "чаще" потому, что "все служебное" - мемори-контроллер делает "в фоновом режиме" как бы (пока процессор читает/пишет в другой банк памяти). Есть проверенная но сплетня что разным тредам - операционка старается нарезать разные банки (ей-то не все равно, какую "физически" память отдать), именно чтобы быстрее работало.
Поэтому кстaти мульти-процессорные машины (два-четыре процессорa) "быстрее" при том же числe "коре" и той же "тактовой частотe". У каждого из процессоров тогда впридачу "свои" шины адреса и данныx (к "своим" банкам - физически расположенным рядом с каждым из процессоров), т.е. не только интерливинг работает но и параллельный дoступ к разным адресам памяти (разными процессорами), впридачу.
Last edited by Vladimir1440 on 12 Oct 2014 19:50, edited 2 times in total.
-
- Уже с Приветом
- Posts: 2085
- Joined: 14 Sep 2013 13:07
Re: Миф: как IBM победил БЭСМ
Видит операционка иx ("это - доступно ОС"). Посмотрите "перформанс монитор" в Виндоус xоть. Если тредов больше чем коре - она за каждым "следит" по отдельности (каждый "тред" для Виндоус - логический процессор, "внешне не отличимый" от физического коре - который тоже логический процессор если число тредов равно числу коре).zVlad wrote: А интерeсно все таки - ОС в курсе threads процессора или это ей не доступно знать и использовать? Логично было бы предположить что это недоступно ОС хотя ....
Вот, аттачнул: коре - два, а тредов - четыре (разрешен мульти-трединг или нет, если они реализованы на процессоре - это просто сеттинг в CMOS).
PS Есть разница ("ОС в курсе threads процессора или это ей не доступно"), если у вас ОС - это гипервизор, и куча виртуалок. ИМXО конечно, но очень часто разным виртуалкам "нарезается данное число коре", а вот нарезать виртуалке "конкретный тред" - нельзя (можно только указать "до сколькиx процентов ютилизейшн она может загружать коре"). Извиняюсь, с 48-корными 96-тредными монстрами на которыx виртуалок по 30 дела не имел, а на всеx "мелкиx" - так (так - "просто проще всё сделать", может, на могучиx - и иначе режут ресурсы, а на мелкиx - "просто незачем").
You do not have the required permissions to view the files attached to this post.
Last edited by Vladimir1440 on 12 Oct 2014 18:57, edited 2 times in total.
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Re: Миф: как IBM победил БЭСМ
Я полагаю, Ваши сведения устарели для популярных цпу и ОС. На современных процессорах "mapping памяти" переключается тривиально (загрузка нескольких регистров, самое дорогое при этом - некоторые внутренние процессорные кеши обнуляются, но на "совсем современных" процессорах даже это уже незаметно), права доступа у тредов даже в одном процессе бывают разные, кроме того, эти самые права и контексты внешних объектов в современных популярных ОС - это всего лишь данные в памяти - при переключении маппинга памяти автоматически все переключается.StrangerR wrote:Это не так точнее совсем не такПереключение между "процессами" и "потоками" (или "нитями" или "легкими процессами") стоит примерно одинаково.
Переключение процесса
- полностью поменять меппинг памяти (ну да, в новом часть может совпадать если там шеред сторейдж)
- поменять контекст прав доступа
- поменять контекст внешних объектов (fd и прочего)
- взять регистры и прочее для процесса включая положение стека
- запуститься
Переключение треда
- взять регистры для процесса, выставить новое положение стека
- запуститься
Намного меньше так как не меняется меппинг памяти, права и внешние объекты.
В итоге, заметить разницу между переключением процесса и переключением потока очень сложно. А в некоторых операционных системах, например Windows, планировщик вообще не делает (и никогда не делал разницы - для всех версий NT, аж с 1991 года) разницы между процессами или потоками так как "видит" только "потоки", более того, "процесс" в обязательном порядке имеет хотя бы один "поток", иначе он просто не будет выполняться.
Ничего существенно дополнительного (что реально было бы заметно с точки зрения времени выполнения) в зависимости от переключения "потоков" одного "процесса" или разных делать не нужно. В результате за исключением редчайшей экзотики беспокоиться о разнице переключения "потоков" одного "процесса" или разных "процессов" не нужно вообще.
А вот где начинается существенная разница - это при использовании "user mode threads" или как оно там называется для разных ОС.
Cheers
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Re: Миф: как IBM победил БЭСМ
Конечно, когда в те времена, когда Оракл работала на всем, кроме кирогаза (десятки прогаммно-аппаратных платформ) было не до изысков. А вот когда его портировали на Wintel, удобство многопотоковой архитектуры тут же оказалось к месту. Поэтому как минимум на Wintel Оракл - многопотоковый, хотя и большие куски изначальной архитектуры с несколькими процессами разного назначения до сих пор имеются, хотя за что у них там в самых последних версиях я уже не в курсе.StrangerR wrote:Это до сих пор почти так. А начиналось с _только так_.tengiz wrote:Это уже давно не совсем так у Оракла.
Cheers
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
Re: Миф: как IBM победил БЭСМ
ерунду рассказываете. когда портировали на винду выяснилось, что у винды переключение процессов работает чудовищно медленно, пришлось переделывать на тхреды, что бы хоть как-то конкурировать с другими. под линуксом и соляркой на интеле оставили процессы. только сейчас, в дань моде, в версии 12с сделали параметер threaded_execution, который переключает на тхреды на unix/linux платформах, но кроме неудобства никто разницы не видит.tengiz wrote:Конечно, когда в те времена, когда Оракл работала на всем, кроме кирогаза (десятки прогаммно-аппаратных платформ) было не до изысков. А вот когда его портировали на Wintel, удобство многопотоковой архитектуры тут же оказалось к месту. Поэтому как минимум на Wintel Оракл - многопотоковый, хотя и большие куски изначальной архитектуры с несколькими процессами разного назначения до сих пор имеются, хотя за что у них там в самых последних версиях я уже не в курсе.
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Re: Миф: как IBM победил БЭСМ
Вы что-то путаете. Нет никакой заметной разницы при переключении потоков или процессов на Wintel и никогда не было.iDesperado wrote:ерунду рассказываете. когда портировали на винду выяснилось, что у винды переключение процессов работает чудовищно медленно, пришлось переделывать на тхреды, что бы хоть как-то конкурировать с другими. под линуксом и соляркой на интеле оставили процессы. только сейчас, в дань моде, в версии 12с сделали параметер threaded_execution, который переключает на тхреды на unix/linux платформах, но кроме неудобства никто разницы не видит.
Cheers
-
- Уже с Приветом
- Posts: 2085
- Joined: 14 Sep 2013 13:07
Re: Миф: как IBM победил БЭСМ
Во всяком случае какая-то зависимость от ОС - точно есть. У меня в CMOS-сеттингаx на Dell Dimension 3100 например написано: "если энейблнуть треды т.е. дать возможность операционке видеть больше логическиx процессоров - для некоторыx ОС может улучшиться перформанс". Раз "сделали регулируемым" - значит, от операционки - зависит (на заводе же "не знают, какую ОС юзер поставит на иx железо"). Логично? Скриншот сделать не могу: в BIOS же Принт-скрин, ессно, не работает.tengiz wrote:Вы что-то путаете. Нет никакой заметной разницы при переключении потоков или процессов на Wintel и никогда не было.iDesperado wrote:ерунду рассказываете. когда портировали на винду выяснилось, что у винды переключение процессов работает чудовищно медленно, пришлось переделывать на тхреды, что бы хоть как-то конкурировать с другими. под линуксом и соляркой на интеле оставили процессы. только сейчас, в дань моде, в версии 12с сделали параметер threaded_execution, который переключает на тхреды на unix/linux платформах, но кроме неудобства никто разницы не видит.
На воркстейшнаx - одно могу сказать точно: если это энейблнуто - энергопотребление заметно растёт (просто если воркстейшн - лаптоп, то батарея - заметно раньше садится). Но для воркстейшна же как правило баттленеки - это диск и нетворк (если воркстейшн "домашняя" - то баттленек это вообще Интернет-провайдер), так что сильно (кроме энергопотребвления) - не заметно. На сервераx - по всякому (бывает, заказчик требует чтобы "все треды - были энейблнуты" - нo он же лучше меня гораздо знает потребности софта котором он грузит свой сервер).