powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Еще раз вопросы про CPU Affinity
3 сообщений из 3, страница 1 из 1
Еще раз вопросы про CPU Affinity
    #39954490
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Недавно был срачик с участием какого-то новичка и КДВ, затрагивающий тему CPU Affinity .
Попытался сегодня его перечитать, но не нашел. Возможно его подтерли.

У меня появились виндовые сервера на которых можно пытаться что-то распараллелить, заодно решил почитать и по CPU Affinity .

Я считал что CPU Affinity это битовая маска позволяющая указать на каком из нескольких ядер работать Firebrid (2.5)
И что необходимость что-то указывать растет из того что, без конкретного указания ядра, винда начинает бессмысленно перебрасывать FB с одного ядра на другое, на что тратятся ресурсы без всякой пользы.

Кроме того, я считал что FB будет работать на указанном ядре целиком, сколько бы баз он не обслуживал.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
# ===========================
# SuperServer Engine Settings
# ===========================
#
# ----------------------------
# Which CPUs should be used (Windows Only)
#
# In an SMP system, sets which processors can be used by the server.
# The value is taken from a bit map in which each bit represents a CPU.
# Thus, to use only the first processor, the value is 1. To use both
# CPU 1 and CPU 2, the value is 3. To use CPU 2 and CPU 3, the value
# is 6. The default value is 1.
#
# Type: integer
#
#CpuAffinityMask = 1



Прочитав конфиг видно что там допускается использовать более одного ядра.
А как при этом обстоит дело с переброской процесса с ядра на ядро?

Так же вычитал где-то, что ограничение FB2.5 SS на работу на 1 ядре - это на каждую базу по ядру.
А если у меня баз на сервере несколько, то задействуются несколько ядер?
А если баз больше чем ядер, как они будут объединяться, на какие ядра?
Можно ли управлять какая база на какое ядро сядет?

http://www.ibase.ru/45-ways-to-improve-firebird-performance-russian/ 13. Установите правильный CPU Affinity
Если вы используете SuperServer 2.5, установите параметр CPUAffinity в значение, равное количеству разных используемых баз данных: SuperServer 2.5 может использовать разные ядра для обработки запросов к разным БД (например, 3 БД – 3 ядра, и т.д.).


Тут не упомянуто что CPUAffinity это не integer а битовая маска, из-за чего значение 3 воспринимается как 3 ядра, хотя на самом деле это 2 ядра?

В том самом срачике что я не смог найти, кажется Сибиряков писал что использовать CPUAffinity=3 это значит ликвидировать смысл этого параметра, т.к. он нужен для привязки к конкретному ядру, и указывать более одного значит не указать на каком конкретно. Однако, в свете вышесказанного, в т.ч. и конфига FB, использовать одновременно несколько ядер - это нормально.

Где истина?
...
Рейтинг: 0 / 0
Еще раз вопросы про CPU Affinity
    #39954509
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks
Я считал что CPU Affinity это битовая маска позволяющая указать на каком из нескольких ядер работать Firebrid (2.5)
И что необходимость что-то указывать растет из того что, без конкретного указания ядра, винда начинает бессмысленно перебрасывать FB с одного ядра на другое, на что тратятся ресурсы без всякой пользы.
После WinNT прошло много времени и постоянного перебрасывания с ядра на ядро не происходит (вроде как), есть смысл попробовать и понаблюдать на своей конкретной системе.
Никто же не удивляется, что процессы CS не привязаны к одному ядру, но в сумме работают на всех ядрах без проблем.
И, да, affinity - это маска.

fraks
Кроме того, я считал что FB будет работать на указанном ядре целиком, сколько бы баз он не обслуживал.
Конечно, а как иначе ?

fraks
А как при этом обстоит дело с переброской процесса с ядра на ядро?
См. выше.

fraks
Так же вычитал где-то, что ограничение FB2.5 SS на работу на 1 ядре - это на каждую базу по ядру.
А если у меня баз на сервере несколько, то задействуются несколько ядер?
В FB 2.5 SS есть только один активный поток в каждый момент времени обслуживающий конкретную БД.
Если БД две - таких потоков может быть два и т.д.
Соответственно, эти активные потоки могут работать на том кол-ве ядер, которое разрешено affinity.
Есс-но, два потока не могут занять 3 ядра :)
До 2.5 в SS мог быть только один активный поток независимо от кол-ва БД.

fraks
А если баз больше чем ядер, как они будут объединяться, на какие ядра?
Планированием выполнения потоков занимается ОС, FB не вмешивается.

fraks
Можно ли управлять какая база на какое ядро сядет?
Нет

fraks
Тут не упомянуто что CPUAffinity это не integer а битовая маска, из-за чего значение 3 воспринимается как 3 ядра, хотя на самом деле это 2 ядра?
3 (10) == 11 (2) , т.е. - да - это маска и это два ядра.
В firebird.conf это описано.

fraks
Где истина?
Как обычно :)
...
Рейтинг: 0 / 0
Еще раз вопросы про CPU Affinity
    #39954538
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Еще раз вопросы про CPU Affinity
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]