BSDPORTAL.RU

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

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




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

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


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

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3129
Откуда: Мезозой Пангея
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.15.17-zen+ #15 ZEN SMP PREEMPT Sat Apr 14 09:48:33 EEST 2018 x86_64 x86_64 x86_64 GNU/Linux


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

Зарегистрирован: Вт 18 сен, 2007 10:26 am
Сообщения: 896
Откуда: СССР, Красноярск
А откуда тогда >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
Сообщения: 5161
Откуда: Москва
fidaj писал(а):
оно и так загрузку по всем ядрам считает с учетом их количества и текущих состояний.

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

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

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

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


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

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3129
Откуда: Мезозой Пангея
хм.. да, действительно.
Код:
--- 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.15.17-zen+ #15 ZEN SMP PREEMPT Sat Apr 14 09:48:33 EEST 2018 x86_64 x86_64 x86_64 GNU/Linux


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

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

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

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

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

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


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

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.15.17-zen+ #15 ZEN SMP PREEMPT Sat Apr 14 09:48:33 EEST 2018 x86_64 x86_64 x86_64 GNU/Linux


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

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


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

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


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

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.15.17-zen+ #15 ZEN SMP PREEMPT Sat Apr 14 09:48:33 EEST 2018 x86_64 x86_64 x86_64 GNU/Linux


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

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


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

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

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


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

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

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.15.17-zen+ #15 ZEN SMP PREEMPT Sat Apr 14 09:48:33 EEST 2018 x86_64 x86_64 x86_64 GNU/Linux


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

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


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

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.15.17-zen+ #15 ZEN SMP PREEMPT Sat Apr 14 09:48:33 EEST 2018 x86_64 x86_64 x86_64 GNU/Linux


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

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


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

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3129
Откуда: Мезозой Пангея
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.15.17-zen+ #15 ZEN SMP PREEMPT Sat Apr 14 09:48:33 EEST 2018 x86_64 x86_64 x86_64 GNU/Linux


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

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


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

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


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

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

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 4.15.17-zen+ #15 ZEN SMP PREEMPT Sat Apr 14 09:48:33 EEST 2018 x86_64 x86_64 x86_64 GNU/Linux


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

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


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

Зарегистрирован: Вт 18 сен, 2007 10:26 am
Сообщения: 896
Откуда: СССР, Красноярск
С точки зрения скорострельности - 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], Google Feedfetcher


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

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