Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Многопоточность

Статус пользователя TrikSer
сообщение 9.8.2011, 15:06
Сообщение #1
Стаж: 16 лет

Сообщений: 675
Благодарностей: 313
Полезность: 713

Приветствую уважаемые форумчане.
Столкнулся с такой проблемой.
Есть определенные модовые сервера, которые стоят на моем машинке.
Так вот сама проблема, некоторые из них, просто не умещаются на ядре в 2400 mhz, и просто виснут и отправляются отдохнуть...
Так вот, надо заставить работать сервер на нескольких ядрах.
Только не надо говорить, что это не реально.
Это вполне реально, сам видел это приличное количество раз.
Инфа:
Ось: CentOS 5.6
Процессор: x3430
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Trollface_and_facepalm
сообщение 9.8.2011, 15:25
Сообщение #2


Стаж: 14 лет

Сообщений: 152
Благодарностей: 100
Полезность: 907

Тоже интересовала эта тема, но из толкового нашёл только
Цитата
если процесс не умеет openmp/smp сам по себе (как например 7z, pbzip2 , pigz) то он и будет работать на одном ядре, загружая его на максимум, заставить такой процесс использовать несколько ядер сразу у вас не выйдет


!
Аккаунт пользователя заблокирован до: 17.7.273792712, 21:44
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя sp0ke
сообщение 9.8.2011, 17:27
Сообщение #3
Стаж: 17 лет

Сообщений: 534
Благодарностей: 102
Полезность: 164

в скрипте запуска есть разброс по ядрам? Если да, впиши 0,1,2,3 и все
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TrikSer
сообщение 9.8.2011, 18:51
Сообщение #4
Стаж: 16 лет

Сообщений: 675
Благодарностей: 313
Полезность: 713

Цитата(sp0ke @ 9.8.2011, 17:27) *
в скрипте запуска есть разброс по ядрам? Если да, впиши 0,1,2,3 и все

Вы не совсем понял смысл.
Если, я закреплю сервер за определенным ядром толку не будет.
Смысл в том, что серверу не хватает мощности ядра.
Например зомби сервер, полностью выжирает ядро x3430 уже при 20-24 игроках, причем без проблем.
Я знаю, что по сути своей hl1 не умеет работать на нескольких ядрах одновременно, тк не имеет многопоточности.
Но сам лично видел, когда его заставляли это делать.
Живой пример Нуб
У него именно так.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 11.8.2011, 7:47
Сообщение #5


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

TrikSer,
приложение однопоточное может быть использовано как многопоточное если в системе есть SMT (Symmetric multi thread)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя TrikSer
сообщение 12.8.2011, 10:40
Сообщение #6
Стаж: 16 лет

Сообщений: 675
Благодарностей: 313
Полезность: 713

Цитата(330863 @ 11.8.2011, 8:47) *
TrikSer,
приложение однопоточное может быть использовано как многопоточное если в системе есть SMT (Symmetric multi thread)

Вот я и прошу помощи.
С smt не когда не водился, так-что нужна помощь)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0rax
сообщение 12.8.2011, 14:27
Сообщение #7


Стаж: 18 лет

Сообщений: 1077
Благодарностей: 530
Полезность: 884

Цитата(330863 @ 11.8.2011, 8:47) *
TrikSer,
приложение однопоточное может быть использовано как многопоточное если в системе есть SMT (Symmetric multi thread)

SMT (Simultaneous Multithreading)
Цитата
масштабируемость и поддержка большего количества архитектур

Благодаря изменениям, внесенным в новый планировщик, он легче переносится на другие архитектуры, типа NUMA (от англ. Non-Uniform Memory Access -- неоднородный доступ к памяти прим. перев.) и SMT (от англ. Simultaneous Multithreading -- Параллельная Многопоточность прим. перев.)

От переводчика:
Основная идея NUMA архитектуры заключается в образовании основной вычислительной системы посредством объединения однотипных модулей, коммутируемых высокоскоростной сетью. Каждый модуль может состоять из одного или нескольких процессоров со своей локальной памятью, которая образует единое адресное пространство системы и часто подсистемы ввода/вывода.
Технология SMT позволяет одному процессору работать за нескольких сразу, повышая эффективность распределения и управления вычислительной нагрузкой. Когда обычный процессор выполняет несколько задач, он может перейти к следующей лишь после того, как завершит предыдущую. Многопоточный процессор способен обрабатывать сразу несколько потоков команд (или "нитей" -- threads) одновременно. Используя механизм многопоточности, SMT-процессор может выполнять от четырех до десяти команд за такт, тогда как обычный выполняет, как правило, лишь от одной до четырех. Кроме того, чтобы воспользоваться технологией SMT, переписывать приложения не потребуется.

Архитектура NUMA используется на некоторых высокопроизводительных серверах и супер-ЭВМ. Кроме того, продолжается работа над SMT (Symmetric Multithreading -- Симметричная Многопоточность. Здесь я хочу внести некоторую ясность -- автор расшифровывает аббревиатуру SMT как Symmetric Multithreading -- Симметричная Многопоточность, однако в процессе работы над переводом я встречал расшифровку этой аббревиатуры как Simultaneous Multithreading -- Параллельная Многопоточность, что на мой взгляд, более точно отражает смысл этой технологии прим. перев.). SMT также известна под термином : HyperThreading (Гиперпоточность). Одна из причин этой работы состоит в том, что сейчас каждый процессор имеет свою очередь задач. И только код, управляющий распределением вычислительной нагрузки, имеет "глобальное" значение для системы. Таким образом, для отдельных архитектур, необходимо внести изменения в эту согласующую часть. Недавно были выпущены "заплаты" для NUMA. Они были введены в состав ядра 2.5.59. SMT-процессоры имеют два (или более) виртуальных процессора на одном физическом кристалле -- один "логический" процессор может выполнять какую нибудь работу, в то время как другой ожидает доступа к памяти. SMT может рассматриваться как своего рода NUMA, поскольку совместно используют кеш-память, а поэтому получают более быстрый доступ к памяти, к которой недавно обращался один из них. В направлении SMT также ведется работа, но новый O(1)-планировщик способен обслуживать SMT-процессоры достаточно хорошо и без внесения каких либо изменений. Недавно были выпущены "заплаты" к ядру для SMT. Хотя архитектура NUMA и имеет некоторое сходство с архитектурой SMT, тем не менее, планировщик Linux обрабатывает их по-разному.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя 330863
сообщение 12.8.2011, 18:04
Сообщение #8


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

c0rax,
о_О меня запутал другой человек с SMT sad.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TrikSer
сообщение 12.8.2011, 18:30
Сообщение #9
Стаж: 16 лет

Сообщений: 675
Благодарностей: 313
Полезность: 713

Ну так, стоящие предложения еще будут ?
Надо наверно нуб`а подождать, у него было это осуществлено
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0rax
сообщение 12.8.2011, 21:18
Сообщение #10


Стаж: 18 лет

Сообщений: 1077
Благодарностей: 530
Полезность: 884

Цитата(TrikSer @ 12.8.2011, 19:30) *
Ну так, стоящие предложения еще будут ?
Надо наверно нуб`а подождать, у него было это осуществлено

с нуб'ом, мы это реализовали через CFQ шедуллер, входящий в основную ветку ядра Linux.
То бишь нагрузку мы стали не сами контролировать, а предоставили это делать планировшику (CFQ), как ему это будет делать удобнее, то есть динамическое распределение нагрузки по CPU, а не жесткое привязывание. (запуск процесса c task флагом 0xF)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя TrikSer
сообщение 12.8.2011, 22:34
Сообщение #11
Стаж: 16 лет

Сообщений: 675
Благодарностей: 313
Полезность: 713

Цитата(c0rax @ 12.8.2011, 21:18) *
с нуб'ом, мы это реализовали через CFQ шедуллер, входящий в основную ветку ядра Linux.
То бишь нагрузку мы стали не сами контролировать, а предоставили это делать планировшику (CFQ), как ему это будет делать удобнее, то есть динамическое распределение нагрузки по CPU, а не жесткое привязывание. (запуск процесса c task флагом 0xF)

Ну а подробней все это дело.
Я хоть и не дуб в лине, но для меня это уже сложновато.
Или только платные консультаций ? blush2.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Flomik
сообщение 15.8.2011, 9:30
Сообщение #12


Стаж: 15 лет

Сообщений: 128
Благодарностей: 27
Полезность: 170

незнаю как в centos, но в ubuntu выполняется через тасксет вот так
Цитата
taskset -pc 0-3 1234

1234 - pid
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TrikSer
сообщение 15.8.2011, 14:11
Сообщение #13
Стаж: 16 лет

Сообщений: 675
Благодарностей: 313
Полезность: 713

Цитата(Flomik @ 15.8.2011, 10:30) *
незнаю как в centos, но в ubuntu выполняется через тасксет вот так

1234 - pid

Опять не туда.
Мои посты вообще читают ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 21.8.2011, 13:10
Сообщение #14


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

c0rax,
как включить данный планировшик в ядро ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0rax
сообщение 21.8.2011, 13:54
Сообщение #15


Стаж: 18 лет

Сообщений: 1077
Благодарностей: 530
Полезность: 884

Цитата(330863 @ 21.8.2011, 14:10) *
c0rax,
как включить данный планировшик в ядро ?

Код
CONFIG_IOSCHED_CFQ=y
CONFIG_CFQ_GROUP_IOSCHED=y
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 21.8.2011, 15:19
Сообщение #16


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

c0rax,
Код
server linux # zcat /proc/config.gz | grep CFQ
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_CFQ=y
server linux #

:biggrin: я даже не знал)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя coolman
сообщение 4.9.2011, 19:55
Сообщение #17


Стаж: 19 лет
Город: Екатеринбург

Сообщений: 1220
Благодарностей: 218
Полезность: 149

ребятки как я не старался не хочет между ядрами распределяться, жрет одно ядро и все тут sad.gif
taskset -c 0-1
по ядрам да можно распределить, а вот что бы два захватил не хочет, помогите, сильная нагрузка на проц, при 15 игроках 70-80%, фпс естественно проседает, распределить бы между 2 ядрами.

Отредактировал: coolman, - 5.9.2011, 6:29
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 2 гостей читают эту тему: