BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 9:24 am 
Не в сети

Зарегистрирован: Вт 18 сен, 2007 10:26 am
Сообщения: 811
Откуда: СССР, Красноярск
Собственно вопрос - как применять на мультиядерных системах?
Ведь, судя по отладке работы powerd, он(powerd) нагрузку суммирует,
и полная загрузка на 4-х ядерной системе будет 400%,
а параметр "-r" не допускает установку больше 100%.
Т.е. если нагрузка относительно небольшая, процентов по 30 на ядро,
то частота не будет снижаться!

P.S. сижу на 10-stable amd64, sysctl выдаёт:
dev.cpu.0.freq_levels: 2333/22464 2000/22464
- раньше режимов было больше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 1:46 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5063
Откуда: Москва
AlexVPetrov писал(а):
Собственно вопрос - как применять на мультиядерных системах?
Ведь, судя по отладке работы powerd, он(powerd) нагрузку суммирует,
и полная загрузка на 4-х ядерной системе будет 400%,
а параметр "-r" не допускает установку больше 100%.

Похоже на багу. Хотя мне кажется что проблема не в ограничении 100% а в суммировании загрузки - я бы брал максимальную по всем CPU.

AlexVPetrov писал(а):
Т.е. если нагрузка относительно небольшая, процентов по 30 на ядро,
то частота не будет снижаться!

Наоборот, нельзя настроить на большие нагрузки.

AlexVPetrov писал(а):
P.S. сижу на 10-stable amd64, sysctl выдаёт:
dev.cpu.0.freq_levels: 2333/22464 2000/22464
- раньше режимов было больше.

На CURRENT/Core i7 и 10.1/Core i5 нормальный список режимов. Если нашли регрессию, отправляйте PR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 2:29 pm 
Не в сети

Зарегистрирован: Вт 18 сен, 2007 10:26 am
Сообщения: 811
Откуда: СССР, Красноярск
Мотин мне ответил:
Если мне не изменяет память, недавно в ядре выключили драйвер
троттлинга. Он практически бесполезен для процессоров поддерживающих
состояния C1E или C2 (большинство, начиная с Core2Duo). Оставшиеся
драйверы снижают частоту вместе с напряжением питания, что более
эффективно. Но в какой-то момент они достигают уровня когда дальнейшее
снижение потребления больше не оправдывает снижения производительности.
Для настольных процессоров это может быть и 2ГГц, а для ультрамобильных
может и 800МГц -- как BIOS скажет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 6:58 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3072
Откуда: Ukraine
AMDmi3 писал(а):
AlexVPetrov писал(а):
Собственно вопрос - как применять на мультиядерных системах?
Ведь, судя по отладке работы powerd, он(powerd) нагрузку суммирует,
и полная загрузка на 4-х ядерной системе будет 400%,
а параметр "-r" не допускает установку больше 100%.

Похоже на багу. Хотя мне кажется что проблема не в ограничении 100% а в суммировании загрузки - я бы брал максимальную по всем CPU.



оно и так загрузку по всем ядрам считает с учетом их количества и текущих состояний.
Код:
...
        if (load) {
                *load = 0;
                for (cpu = 0; cpu < ncpus; cpu++) {
                        total = 0;
                        for (i = 0; i < CPUSTATES; i++) {
                            total += cp_times[cpu * CPUSTATES + i] -
                                cp_times_old[cpu * CPUSTATES + i];
                        }
                        if (total == 0)
                                continue;
                        *load += 100 - (cp_times[cpu * CPUSTATES + CP_IDLE] -
                            cp_times_old[cpu * CPUSTATES + CP_IDLE]) * 100 / total;
                }
        }
...

причем с учетом того что если все загружены полностью - общая посчитанная загрузка будет 100%

определенно это не баг.

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.10.2-zen-fidaj-muqss-ck+ #4 ZEN SMP PREEMPT Sun Mar 12 19:48:08 EET 2017 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 7:23 pm 
Не в сети

Зарегистрирован: Вт 18 сен, 2007 10:26 am
Сообщения: 811
Откуда: СССР, Красноярск
А откуда тогда >100% значения?
Код:
powerd -v -n adp -i 100%
powerd: unable to determine AC line status
load 314%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 267%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 180%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 133%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 136%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 153%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 152%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 147%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 142%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 164%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 160%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 133%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 146%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 217%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 177%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 172%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 193%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 178%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 177%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 128%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 154%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 152%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 168%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 133%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 140%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
load 155%, current freq 2333 MHz ( 0), wanted freq 2333 MHz
^Ctotal joules used: 146.016


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 7:40 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5063
Откуда: Москва
fidaj писал(а):
оно и так загрузку по всем ядрам считает с учетом их количества и текущих состояний.

Но суммирует, а не берёт максимум. Смысл в том что если у меня каждое из 4 ядер загружено на 25%, я могу спокойно уменьшить частоту в 4 раза. Если же одно на 100%, то не могу - мне нужна максимальная производительность.

По сумме загрузок различить эти ситуации нельзя, по максимуму - можно.

fidaj писал(а):
причем с учетом того что если все загружены полностью - общая посчитанная загрузка будет 100%

Нет конечно. Вы читали кусок кода который привели?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 7:44 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3072
Откуда: Ukraine
хм.. да, действительно.
Код:
--- powerd.c.orig       2015-03-19 17:41:06.154614000 +0200
+++ powerd.c    2015-03-19 17:43:07.718258000 +0200
@@ -168,6 +168,7 @@
                        *load += 100 - (cp_times[cpu * CPUSTATES + CP_IDLE] -
                            cp_times_old[cpu * CPUSTATES + CP_IDLE]) * 100 / total;
                }
+               *load = *load / ncpus;
        }

        memcpy(cp_times_old, cp_times, cp_times_len);

а так изменит поведение powerd?

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.10.2-zen-fidaj-muqss-ck+ #4 ZEN SMP PREEMPT Sun Mar 12 19:48:08 EET 2017 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 7:45 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3072
Откуда: Ukraine
AMDmi3 писал(а):
fidaj писал(а):
оно и так загрузку по всем ядрам считает с учетом их количества и текущих состояний.

Но суммирует, а не берёт максимум. Смысл в том что если у меня каждое из 4 ядер загружено на 25%, я могу спокойно уменьшить частоту в 4 раза. Если же одно на 100%, то не могу - мне нужна максимальная производительность.

По сумме загрузок различить эти ситуации нельзя, по максимуму - можно.

fidaj писал(а):
причем с учетом того что если все загружены полностью - общая посчитанная загрузка будет 100%

Нет конечно. Вы читали кусок кода который привели?


да. я уже понял, согласился.

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.10.2-zen-fidaj-muqss-ck+ #4 ZEN SMP PREEMPT Sun Mar 12 19:48:08 EET 2017 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 7:46 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5063
Откуда: Москва
Так да. Но см. предедущий комментарий про максимум.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 7:50 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3072
Откуда: Ukraine
AMDmi3 писал(а):
Так да. Но см. предедущий комментарий про максимум.


тогда вообще нужно переопределить логику подсчета загрузки.

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.10.2-zen-fidaj-muqss-ck+ #4 ZEN SMP PREEMPT Sun Mar 12 19:48:08 EET 2017 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 8:03 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5063
Откуда: Москва
https://reviews.freebsd.org/D2097


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 8:05 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3072
Откуда: Ukraine
AMDmi3 писал(а):
fidaj писал(а):
оно и так загрузку по всем ядрам считает с учетом их количества и текущих состояний.

Но суммирует, а не берёт максимум. Смысл в том что если у меня каждое из 4 ядер загружено на 25%, я могу спокойно уменьшить частоту в 4 раза. Если же одно на 100%, то не могу - мне нужна максимальная производительность.


кстати опять-таки не однозначно в этом случае, например на моем процессоре выполнить линейно на одном ядре не понижая частоту при 100% загрузке а наоборот используя TurboBoost будет как раз быстрее.

в общем я понял о чем речь.

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.10.2-zen-fidaj-muqss-ck+ #4 ZEN SMP PREEMPT Sun Mar 12 19:48:08 EET 2017 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 8:17 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3072
Откуда: Ukraine
AMDmi3 писал(а):
https://reviews.freebsd.org/D2097


это не ломает случаем?
maximum minimum adaptive hiadaptive

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.10.2-zen-fidaj-muqss-ck+ #4 ZEN SMP PREEMPT Sun Mar 12 19:48:08 EET 2017 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 8:18 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5063
Откуда: Москва
Не знаю, это просто мысль в слухкод. По идее оно не должно ничего ломать, ибо возвращает загрузку в [0; 100] как и ожидается. За тестирование + в карму.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 8:27 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3072
Откуда: Ukraine
AMDmi3 писал(а):
Не знаю, это просто мысль в слухкод. По идее оно не должно ничего ломать, ибо возвращает загрузку в [0; 100] как и ожидается.


да, ничего не должно ломать
Код:
/* Always switch to the lowest frequency in min mode. */
      if (mode == MODE_MIN) {
         freq = freqs[numfreqs - 1];
         if (curfreq != freq) {
            if (vflag) {
               printf("now operating on %s power; "
                   "changing frequency to %d MHz\n",
                   modes[acline_status], freq);
            }
            idle = 0;
            if (set_freq(freq) != 0) {
               warn("error setting CPU freq %d",
                   freq);
               continue;
            }
         }
         continue;
      }

      /* Always switch to the highest frequency in max mode. */
      if (mode == MODE_MAX) {
         freq = freqs[0];
         if (curfreq != freq) {
            if (vflag) {
               printf("now operating on %s power; "
                   "changing frequency to %d MHz\n",
                   modes[acline_status], freq);
            }
            idle = 0;
            if (set_freq(freq) != 0) {
               warn("error setting CPU freq %d",
                   freq);
               continue;
            }
         }
         continue;
      }

      /* Adaptive mode; get the current CPU usage times. */
      if (read_usage_times(&load)) {
         if (vflag)
            warn("read_usage_times() failed");
         continue;
      }

      if (mode == MODE_ADAPTIVE) {
         if (load > cpu_running_mark) {
            if (load > 95 || load > cpu_running_mark * 2)
               freq *= 2;
            else
               freq = freq * load / cpu_running_mark;
            if (freq > freqs[0])
               freq = freqs[0];
         } else if (load < cpu_idle_mark &&
             curfreq * load < freqs[get_freq_id(
             freq * 7 / 8, freqs, numfreqs)] *
             cpu_running_mark) {
            freq = freq * 7 / 8;
            if (freq < freqs[numfreqs - 1])
               freq = freqs[numfreqs - 1];
         }
      } else { /* MODE_HIADAPTIVE */
         if (load > cpu_running_mark / 2) {
            if (load > 95 || load > cpu_running_mark)
               freq *= 4;
            else
               freq = freq * load * 2 / cpu_running_mark;
            if (freq > freqs[0] * 2)
               freq = freqs[0] * 2;
         } else if (load < cpu_idle_mark / 2 &&
             curfreq * load < freqs[get_freq_id(
             freq * 31 / 32, freqs, numfreqs)] *
             cpu_running_mark / 2) {
            freq = freq * 31 / 32;
            if (freq < freqs[numfreqs - 1])
               freq = freqs[numfreqs - 1];
         }
      }


минимум и максимум смотрят по частотам, а адаптивные режимы ведут пересчет относительно 100% точнее 95%-как дефолтное. хотя в документации о каком-либо лимите в 5% ничего не сказано.

хотя закрадываются подозрения что и этот участок кода нужно будет переписывать.

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.10.2-zen-fidaj-muqss-ck+ #4 ZEN SMP PREEMPT Sun Mar 12 19:48:08 EET 2017 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 10:14 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5063
Откуда: Москва
Нда, век живи век учись. Текущее поведение корректно. Хотя и неоптимально во многих случаях.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 10:26 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3072
Откуда: Ukraine
AMDmi3 писал(а):
Нда, век живи век учись. Текущее поведение корректно. Хотя и неоптимально во многих случаях.


так я не понял - сошлись на +++*load /= ncpus; что ли?

:D что же mav@ в документации не напишет что хватит уже предлагать исправления по поводу powerd :D

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.10.2-zen-fidaj-muqss-ck+ #4 ZEN SMP PREEMPT Sun Mar 12 19:48:08 EET 2017 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Чт 19 мар, 2015 10:47 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5063
Откуда: Москва
Не, /= ncpus тоже не нужно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Пт 20 мар, 2015 12:16 am 
Не в сети

Зарегистрирован: Вт 18 сен, 2007 10:26 am
Сообщения: 811
Откуда: СССР, Красноярск
С точки зрения скорострельности - mav наверно прав.
А с точки зрения энергосбережения - не уверен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Особенности применения powerd
СообщениеДобавлено: Пт 20 мар, 2015 12:21 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 20 ноя, 2006 3:33 pm
Сообщения: 144
Откуда: SPb
AlexVPetrov писал(а):
С точки зрения скорострельности - mav наверно прав.
А с точки зрения энергосбережения - не уверен.

С точки зрения потребления, скорее всего тоже, помнится на одной из KyivBSD он рассказывал про энергопотребление, и там что то было про стратегии того как часто процессору надо впадать в спячку и прочие прелести


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика