BSDPORTAL.RU

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

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




Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

Замирает курсор мыши при сборке например lang/gcc46 c -j 2*ncpu на ULE?
да 40%  40%  [ 4 ]
нет 30%  30%  [ 3 ]
использую в системе другой планировщик 30%  30%  [ 3 ]
Всего голосов : 10
Автор Сообщение
СообщениеДобавлено: Пн 31 окт, 2011 11:48 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3147
Откуда: Мезозой Пангея
Если при сборке мира, ядра, портов в несколько потоков (>=2*ncpu) вас раздражает то, что система перестает мгновенно реагировать на ваши действия - то эта тема для вас.

Все "прелести" интерактивности я начал замечать при переходе на 7.х, когда появился нашумевший планировщик ULE.
Говорят что идеология ULE была перенесена в планировщик Mac OS X 10.6, но почему то там я не замечаю (на одном и том же железе) такие тормоза при большой нагрузке на CPU, какие есть во FreeBSD, к моему огромному сожалению...

Именно поэтому я и подхватил интересную тему с нашумевшим в Linux планировщике BFS и попытался сделать порт под CURRENT И демонстрировал полученный результат.

При этом смотрел в код всех трех планировщиков - пытаясь понять чем они занимаются... многое конечно не понял, но это дело времени...

Потом посмотрел в ULE и сделал некоторые незначительные, но важные для интерактивности изменения http://docs.freebsd.org/cgi/mid.cgi?201 ... 7.35db5ccd

Код:
--- sched_ule.c.orig    2011-10-22 11:40:30.000000000 +0300
+++ sched_ule.c 2011-11-03 18:36:11.000000000 +0200
@@ -2118,6 +2118,14 @@
        struct td_sched *ts;

        THREAD_LOCK_ASSERT(td, MA_OWNED);
+       if (td->td_pri_class & PRI_FIFO_BIT)
+               return;
+       ts = td->td_sched;
+       /*
+        * We used up one time slice.
+        */
+       if (--ts->ts_slice > 0)
+               return;
        tdq = TDQ_SELF();
 #ifdef SMP
        /*
@@ -2144,9 +2152,6 @@
                if (TAILQ_EMPTY(&tdq->tdq_timeshare.rq_queues[tdq->tdq_ridx]))
                        tdq->tdq_ridx = tdq->tdq_idx;
        }
-       ts = td->td_sched;
-       if (td->td_pri_class & PRI_FIFO_BIT)
-               return;
        if (PRI_BASE(td->td_pri_class) == PRI_TIMESHARE) {
                /*
                 * We used a tick; charge it to the thread so
@@ -2157,11 +2162,6 @@
                sched_priority(td);
        }
        /*
-        * We used up one time slice.
-        */
-       if (--ts->ts_slice > 0)
-               return;
-       /*
         * We're out of time, force a requeue at userret().
         */
        ts->ts_slice = sched_slice;


Уже отреагировали на мое сообщение в рассылке, поэтому прошу сообщество, кто имеет возможность, желание:
- опробовать мой патч на своей системе;
- провести всевозможные сравнительные тесты (доступные вам) и предоставить любые результаты;
- написать письмо в свободной форме и на доступном вам английском в ту же тему в рассылке и рассказать о своих впечатлениях.
- укажите ваш CPU (желательно полную модель)...

Кое-что, конечно, можем пообсуждать здесь...

P.S. граждане, напишите пожалуйста, в такой форме:
    Наблюдаю/Не наблюдаю проблему с подвисаниями на ULE
    CPU:<модель>


Спасибо!

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.0.15-zen-my-ksm-muqss+ #6 ZEN SMP Sat May 11 16:10:09 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Последний раз редактировалось fidaj Пт 04 ноя, 2011 6:07 pm, всего редактировалось 5 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт 01 ноя, 2011 12:10 pm 
Не в сети
Модератор
Аватара пользователя

Зарегистрирован: Ср 08 ноя, 2006 2:53 pm
Сообщения: 5437
Откуда: СССР, Харьков
У меня FreeBSD 9.0-RC1 GENERIC i386
Могу потестить, если подойдёт.
Перепробовал все планировщики, остановился на 4BSD.
При сборке из портов Firefox и Thunderbird система лезет в подкачку
более чем на 1G ( в наличии 1G) с ULE в ступоре, c BFS приступ эпилепсии
с 4BSD тормозит, но работать можно.
Можно отдать должное BFS, отзывчивость отличная, если в подкачку не лезет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт 01 ноя, 2011 3:44 pm 
Не в сети

Зарегистрирован: Чт 14 май, 2009 6:56 pm
Сообщения: 793
Я так понимаю, переносом этих двух ифов вы исключили sched_balance();
Код:
   /*
    * We run the long term load balancer infrequently on the first cpu.
    */
   if (balance_tdq == tdq) {
      if (balance_ticks && --balance_ticks == 0)
         sched_balance();
   }


и внесение изменений в очередь потоков
Код:
/*
    * Save the old switch count so we have a record of the last ticks
    * activity.   Initialize the new switch count based on our load.
    * If there is some activity seed it to reflect that.
    */
   tdq->tdq_oldswitchcnt = tdq->tdq_switchcnt;
   tdq->tdq_switchcnt = tdq->tdq_load;
   /*
    * Advance the insert index once for each tick to ensure that all
    * threads get a chance to run.
    */
   if (tdq->tdq_idx == tdq->tdq_ridx) {
      tdq->tdq_idx = (tdq->tdq_idx + 1) % RQ_NQS;
      if (TAILQ_EMPTY(&tdq->tdq_timeshare.rq_queues[tdq->tdq_ridx]))
         tdq->tdq_ridx = tdq->tdq_idx;
   }

, правильно? Можете пояснить почему это резко увеличивает отзывчивость и безопасно ли это делать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт 01 ноя, 2011 10:33 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт 03 янв, 2006 12:49 pm
Сообщения: 1038
Откуда: Киев
Использую пока "штатный"
На CoreQuad с 4Гб "залипания мыши" тоже бывают.
Пока не пробовал менять планировщик. Думаю приссоединиться и попробовать чуть позже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 02 ноя, 2011 7:49 am 
Не в сети

Зарегистрирован: Ср 02 ноя, 2011 7:46 am
Сообщения: 1
поставил патч
на 9.0 RC1
пока полет нормальный. субъективно поведение системы стало заметно лучше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 02 ноя, 2011 10:16 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3147
Откуда: Мезозой Пангея
arrowdodger писал(а):
Я так понимаю, переносом этих двух ифов вы исключили sched_balance() и внесение изменений в очередь потоков;
...
, правильно?

нет.
ничего я не исключал, я изменил очередность проверок - перенес проверки необходимости ребалансировки (if (--ts->ts_slice > 0)) и флага высокоприоритетных нитей (if (td->td_pri_class & PRI_FIFO_BIT)) раньше самой балансировки... - что на мой взгляд логичнее... тем самым планировщик для таких случаев не ощуществляет рутину пересчетов статистики использования CPU...
Код:
static void
sched_balance(void)
{
        struct tdq *tdq;

        /*
         * Select a random time between .5 * balance_interval and
         * 1.5 * balance_interval.
         */
        balance_ticks = max(balance_interval / 2, 1);
        balance_ticks += random() % balance_interval;
        if (smp_started == 0 || rebalance == 0)
                return;
        tdq = TDQ_SELF();
        TDQ_UNLOCK(tdq);
        sched_balance_group(cpu_top);
        TDQ_LOCK(tdq);
}

тем более что в НЕ SMP системе участок кода
Код:
#ifdef SMP
        /*
         * We run the long term load balancer infrequently on the first cpu.
         */
        if (balance_tdq == tdq) {
                if (balance_ticks && --balance_ticks == 0)
                        sched_balance();
        }
#endif

и так не используется

arrowdodger писал(а):
Можете пояснить почему это резко увеличивает отзывчивость...

ну резко или не резко... это субъективно...
посмотрите где используется функция sched_clock() - чем раньше из нее выйти - тем быстрее будет разлочиваться поток/нить в statclock...
плюс ко всему - я не знаю на сколько быстро выполняется функция random() и какой метод генерирования псевдослучайных последовательностей она использует (хотя и можно поинтересоваться)... может вообще аппаратный... в том числе и при задействовании аппаратного таймера... и вопрос - насколько быстро это все происходит?
Я знаю что надежные программные генераторы (с большим периодом) - они очень медленные...
Возможно по этим причинам (в том числе) повышается степень интерактивности...

arrowdodger писал(а):
... и безопасно ли это делать?

безопасно для чего именно... в каком смысле - не понял...

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.0.15-zen-my-ksm-muqss+ #6 ZEN SMP Sat May 11 16:10:09 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 02 ноя, 2011 10:18 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3147
Откуда: Мезозой Пангея
arksu писал(а):
поставил патч
на 9.0 RC1
пока полет нормальный. субъективно поведение системы стало заметно лучше.

в соседнем форуме вы ответили кое-что другое...

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.0.15-zen-my-ksm-muqss+ #6 ZEN SMP Sat May 11 16:10:09 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 03 ноя, 2011 9:30 am 
Не в сети

Зарегистрирован: Вт 18 сен, 2007 10:26 am
Сообщения: 963
Откуда: СССР, Красноярск
Поставил патч:
Увеличилась отзывчивость десктопа (KDE), даже при больших нагрузках - сборка чего-либо.
Вчера смотрел фильм в vlc при запущенной сборке KDE 4.7.3 - заметил только пару-тройку незначительных притормаживаний на доли секунды.
Раньше при сборке смотреть видео было невозможно - видео и звук могли останавливаться на единицы секунд.
fidaj, отличная работа!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 03 ноя, 2011 10:43 am 
Не в сети

Зарегистрирован: Чт 14 май, 2009 6:56 pm
Сообщения: 793
Цитата:
я изменил очередность проверок - перенес проверки необходимости ребалансировки (if (--ts->ts_slice > 0)) и флага высокоприоритетных нитей (if (td->td_pri_class & PRI_FIFO_BIT)) раньше самой балансировки... - что на мой взгляд логичнее... тем самым планировщик для таких случаев не ощуществляет рутину пересчетов статистики использования CPU...


М, я вижу что Вы серьезно разобрались в коде и понимаете что делаете. В этом случае, патч действительно выглядит логичным.
Несколько комментариев:
1. Касательно блока внутри #ifdef SMP - я так понимаю, он занимает приличное время из-за которого sched_clock() не возвращает и мютекс не разлочивается, правильно? Но там же в комментарии написано
Цитата:
We run the long term load balancer infrequently on the first cpu.

Infrequently - не часто. Без Вашего патча мы наблюдаем, что управление туда как раз весьма часто попадает, из-за чего все тормозит. Так вот я к чему - быть может баг именно в проверке надо ли нам вызывать sched_balance()?

2. Т.к. в обоих ифах, которые Вы перенесли повыше не используется tdq, то их можно подвинуть и еще выше перед
Код:
tdq = TDQ_SELF();

Конечно, это не ахти что, но я не смотрел содержание макроса TDQ_SELF(), вдруг там какая-нибудь тяжеленькая операция.

В скором времени поставлю Ваш патч на 9-STABLE.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 03 ноя, 2011 12:07 pm 
Не в сети

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

Вы мне льстите :) - я только-только осваиваю...
arrowdodger писал(а):
Несколько комментариев:
1. Касательно блока внутри #ifdef SMP - я так понимаю, он занимает приличное время из-за которого sched_clock() не возвращает и мютекс не разлочивается, правильно? Но там же в комментарии написано
Цитата:
We run the long term load balancer infrequently on the first cpu.

Infrequently - не часто. Без Вашего патча мы наблюдаем, что управление туда как раз весьма часто попадает, из-за чего все тормозит. Так вот я к чему - быть может баг именно в проверке надо ли нам вызывать sched_balance()?

возможно... но я пробовал через sysctl отключать kern.sched.balance, картина с тормозами не менялась...
вероятно либо не правильно реализован алгоритм балансировки, либо не правильно определяется ядро CPU на котором выполняется нить в данный момент...
arrowdodger писал(а):
2. Т.к. в обоих ифах, которые Вы перенесли повыше не используется tdq, то их можно подвинуть и еще выше перед
Код:
tdq = TDQ_SELF();

Конечно, это не ахти что, но я не смотрел содержание макроса TDQ_SELF(), вдруг там какая-нибудь тяжеленькая операция.

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

по тяжести - я все-таки склоняюсь к random()...

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.0.15-zen-my-ksm-muqss+ #6 ZEN SMP Sat May 11 16:10:09 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Последний раз редактировалось fidaj Чт 03 ноя, 2011 10:50 pm, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 03 ноя, 2011 10:42 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3147
Откуда: Мезозой Пангея
граждане, напишите пожалуйста, в такой форме:
    Наблюдаю/Не наблюдаю проблему с подвисаниями на ULE
    CPU:<модель>

Спасибо.

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.0.15-zen-my-ksm-muqss+ #6 ZEN SMP Sat May 11 16:10:09 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 04 ноя, 2011 1:21 am 
Не в сети

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

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.0.15-zen-my-ksm-muqss+ #6 ZEN SMP Sat May 11 16:10:09 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 04 ноя, 2011 12:23 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3147
Откуда: Мезозой Пангея
попрошу - активнее, пожалуйста.
я хочу за сегодня подготовить ответ...

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.0.15-zen-my-ksm-muqss+ #6 ZEN SMP Sat May 11 16:10:09 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 04 ноя, 2011 12:38 pm 
Не в сети
Модератор
Аватара пользователя

Зарегистрирован: Ср 08 ноя, 2006 2:53 pm
Сообщения: 5437
Откуда: СССР, Харьков
Применил патч.
Код:
 FreeBSD 9.0-RC1 GENERIC  i386
Одноголовый p4 prescott

KDE 4.7.2 работает Kaffeine(on line radio) собираются 2 порта и ядро.
Код:
last pid: 56787;  load averages:  4.19,  3.58,  2.35                                                 up 0+00:21:14  10:21:06
125 processes: 5 running, 118 sleeping, 2 zombie
CPU: 69.8% user,  4.3% nice, 24.7% system,  1.2% interrupt,  0.0% idle
Mem: 605M Active, 64M Inact, 239M Wired, 33M Cache, 110M Buf, 38M Free
Swap: 4096M Total, 6296K Used, 4090M Free

  PID USERNAME      THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
55751 root            1  75    0 35028K 24940K RUN      0:03 11.57% cc1
56633 root            1  73    0 22812K 16996K RUN      0:00  4.79% cc1
56597 ankor           1  91   19 46988K 10664K RUN      0:00  1.27% nepomukindexer
 1942 root            1  20    0   338M   319M select   0:33  1.17% Xorg
 2039 ankor           3  52    0   237M 62584K select   0:20  1.07% kdeinit4
 2111 ankor           8  20    0   116M 34000K select   0:18  0.49% kaffeine-xbu
 3010 ankor          18  20    0   158M 69036K uwait    0:21  0.00% firefox-bin
 2173 ankor           2  52    0   144M 45040K select   0:12  0.00% kdeinit4
 2040 ankor           6  20    0   179M 37596K select   0:12  0.00% knotify4
 2095 ankor           7  39   19 77916K 43616K uwait    0:07  0.00% virtuoso-t
 2034 ankor           3  52    0   136M 44144K uwait    0:05  0.00% kwin
 2063 ankor          12  39   19   118M 37412K uwait    0:04  0.00% nepomukservicestub
24373 root            1  34    0 40448K 27172K wait     0:04  0.00% ruby18
32542 ankor           5  20    0   168M 70748K select   0:03  0.00% soffice.bin
 2110 ankor           3  20    0 88356K 36400K kqread   0:03  0.00% kaffeine

Такое впечатление, что ничего не запускал, реагирует мгновенно
и ничего не тормозит, звук не хрюкает.
ULE c этим патчем работает лучше BFS.
P.S. Если в ULE примут зти изменения, то в BFS смысла не вижу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 04 ноя, 2011 4:55 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3147
Откуда: Мезозой Пангея
ankor писал(а):
ULE c этим патчем работает лучше BFS.
P.S. Если в ULE примут зти изменения, то в BFS смысла не вижу.

"не все так просто в датском королевстве"(c)...
BFS - для меня был как запасной вариант...
в ULE есть проблемы с определением топологии процессоров в SMP системах, от сюда - неправильная ребалансировка - которую я по сути отсрочил, переставив участок в коде...
было бы не плохо авторам ULE решить проблему в принципе, а не костыли долеплевать...
надеюсь что затронутая тема в переписке к чему-то толковому приведет... и устранят именно корень проблемы...

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.0.15-zen-my-ksm-muqss+ #6 ZEN SMP Sat May 11 16:10:09 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 04 ноя, 2011 4:59 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3147
Откуда: Мезозой Пангея
уважаемые голосующие, таки соберитесь духом и напишите (если еще не написали) то что я просил http://www.bsdportal.ru/viewtopic.php?p=149778#149778 кратко и локанично...
мне нужно набрать хоть какую-то статистику по типам процессоров...

спасибо!

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.0.15-zen-my-ksm-muqss+ #6 ZEN SMP Sat May 11 16:10:09 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб 05 ноя, 2011 10:15 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3147
Откуда: Мезозой Пангея
по поводу функции random - все стало ясно...она берется не из stdlib а из /sys/libkern/random.c что, впрчем, практически то же самое что и /usr/src/lib/libc/stdlib/rand.c
и выполняется допустимо быстро...

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.0.15-zen-my-ksm-muqss+ #6 ZEN SMP Sat May 11 16:10:09 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

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


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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