Вычислительные заметки
May. 12th, 2020 02:14 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Никогда не говори "никогда"
PID - это идентификатор процесса, например
В Линуксе по умолчанию максимальное значение PID = 32767, 15 двоичных единиц. Когда-то казалось, что этого должно быть достаточно для каждого. При том каждый новый процесс получает следующий за последним номер, даже если запускался на долю секунды. Высвободившиеся номера не используются.
Строго говоря не очень понимаю необходимость такого ранжирования, ведь большесть-меньшесть не значат ничего. Кто родительский процесс, а кто дочерний - записано в другом месте, поэтому можно было бы занимать любой свободный номер, но нет.
Потому пришлось ввести возможность увеличения еще на 7 разрядов где-то в настройках, но мне этим как-то пользоваться не приходилось. И знаток лучится оптимизмом.
И вот, сочиняя свой сервер, я многократно запускал его и останавливал на машине, которая включена круглосуточно. Там еще и другие задачи крутятся, я как пользователь влез, броузер запустил, в интернете лазаю.
И добился, достиг 32767. Практически. Очередной запуск программульки просто не произошел. Собственно я видел, что пошел сверхбыстрый расход PIDов, потому и посмотрел, чем это может грозить, но нашел только процитированный оптимизм. Прошло всего-то 16 лет, причем комп-то немногим моложе того оптимистичного заявления.
Угнать за 60 наносекунд
В комментариях к посту про глобальную систему распределенных вычислений
В связи с чем глянул характеристики нынешнего рекордиста
Привычно отмечаю частоту 1.5 ГГц - это не маркетинговые 3 ГГц. А также, что охлаждение затратнее вычислений :-)
Поскольку задача, на нем решаемая, неизбежно разбита на части между 10 млн. процессоров, интересно прикинуть возможности "скоростной связи между ними". Если бы задача была существенно последовательной, неизбежно возникает ситауция, когда ядру N 123 потребуются результаты вычислений от N 9876543 из стойки, до которой по проводам метров 60. Делим на скорость света - 0.2 мкс
Туда запрос, обратно ответ - 0.4 мкс. За это время комп сделал бы 20 млрд. операций, но нет - надо дождаться обмена критическими данными.
Я как-то поинтерсовался нераспараллеливаемыми задачами, требующими большой производительности. Назвали:
- рендеринг HTML
- Excel
- какая-то биоинформационная база данных
Разъяснять надо ?
То есть даже и для сосредоточенного суперкомпьютинга с очень скоростной связью нераспараллеливаемая задача смысла не имеет. А раcпараллеленную можно считать и распределенно.
640 килобайт должно быть достаточно для каждого
Michail04
Сообщ. #1, 09.02.04, 15:06
Какого максимальное значение PID и что будет если оно будет достигнуто?
Oksiv
Сообщ. #2, 09.02.04, 16:10
Если на вскидку то максимальное значение равно максимальному значению той переменной, которая в ядре содержит следующее значение PID, скорее всего это 32 разрядное число, и вообще PID это просто индекс, ключ число и каких-то ограничений на него не накладывается.
А достич его максимального значения можно только теоретически.
PID - это идентификатор процесса, например
2082 tty2 00:00:15 kate 2223 tty2 00:02:53 vivaldi-bin 2249 tty2 00:00:00 vivaldi-bin 2381 tty2 00:05:17 vivaldi-bin 2762 ? 00:00:00 gvfsd-network 2766 ? 00:00:00 dconf-service 2779 ? 00:00:00 gvfsd-smb-brows 2790 ? 00:00:00 smbd 2792 ? 00:00:00 gvfsd-dnssd 2954 ? 00:00:00 gnome-screensav 3831 tty2 00:01:06 firefox 3890 tty2 00:00:05 Web Content 3965 tty2 00:00:02 WebExtensions
В Линуксе по умолчанию максимальное значение PID = 32767, 15 двоичных единиц. Когда-то казалось, что этого должно быть достаточно для каждого. При том каждый новый процесс получает следующий за последним номер, даже если запускался на долю секунды. Высвободившиеся номера не используются.
Строго говоря не очень понимаю необходимость такого ранжирования, ведь большесть-меньшесть не значат ничего. Кто родительский процесс, а кто дочерний - записано в другом месте, поэтому можно было бы занимать любой свободный номер, но нет.
Потому пришлось ввести возможность увеличения еще на 7 разрядов где-то в настройках, но мне этим как-то пользоваться не приходилось. И знаток лучится оптимизмом.
И вот, сочиняя свой сервер, я многократно запускал его и останавливал на машине, которая включена круглосуточно. Там еще и другие задачи крутятся, я как пользователь влез, броузер запустил, в интернете лазаю.
И добился, достиг 32767. Практически. Очередной запуск программульки просто не произошел. Собственно я видел, что пошел сверхбыстрый расход PIDов, потому и посмотрел, чем это может грозить, но нашел только процитированный оптимизм. Прошло всего-то 16 лет, причем комп-то немногим моложе того оптимистичного заявления.
Угнать за 60 наносекунд
В комментариях к посту про глобальную систему распределенных вычислений
Vadim Rumyantsev
14 апреля 2020, 22:51:48
Основная часть сложности и стоимости суперкомпьютера приходится не на вычислительную производительность процессоров, а на скоростную связь между ними.
В связи с чем глянул характеристики нынешнего рекордиста
Sunway TaihuLight
40000*250 = 10 млн.простых ядер
1.5 ГГц
15 МВт+30 МВт охлаждение
54,9 петафлопса (50е15)
6 гигафлопсов/ватт, 1.5 Вт/ядро,
600 кв.м
Привычно отмечаю частоту 1.5 ГГц - это не маркетинговые 3 ГГц. А также, что охлаждение затратнее вычислений :-)
Поскольку задача, на нем решаемая, неизбежно разбита на части между 10 млн. процессоров, интересно прикинуть возможности "скоростной связи между ними". Если бы задача была существенно последовательной, неизбежно возникает ситауция, когда ядру N 123 потребуются результаты вычислений от N 9876543 из стойки, до которой по проводам метров 60. Делим на скорость света - 0.2 мкс
Туда запрос, обратно ответ - 0.4 мкс. За это время комп сделал бы 20 млрд. операций, но нет - надо дождаться обмена критическими данными.
Я как-то поинтерсовался нераспараллеливаемыми задачами, требующими большой производительности. Назвали:
- рендеринг HTML
- Excel
- какая-то биоинформационная база данных
Разъяснять надо ?
То есть даже и для сосредоточенного суперкомпьютинга с очень скоростной связью нераспараллеливаемая задача смысла не имеет. А раcпараллеленную можно считать и распределенно.