LINUX.ORG.RU
ФорумTalks

[noob] вопрос о потоках

 


0

0

Сколько потоков может держать приложение без особых потерь производительности, если скажем перманентно активных из них - сотня, и нужно чтобы в памяти лежало несколько тысяч? Вопрос - сколько их может там лежать, скажем сотня тысяч, миллион? Подсознательно чувствую, что вопрос тупой, надеюсь на доки и маны по теме.

★★★★★
Ответ на: комментарий от bibi

> Вот я сейчас все брошу и буду на десять страниц давать описание системы. Посреди ночи. Да даже если и полудня. Нет уж, извините, я не стану этого делать. Не вижу в этом ни малейшего смысла. Вполне достаточно указанных граничных условий. Если вы не в состоянии с ними справиться - ничего страшного. Другие люди вполне в состоянии и у них все работает и все счастливы безмерно :)

http://www.linux.org.ru/jump-message.jsp?msgid=4678585&cid=4678830 Тут я описал граничные случаи. КПД - 0. Опровергнете?

zabivator
()
Ответ на: комментарий от zabivator

Меня флаги смутили Про адресное пространство Вы и сам уже ниже написали

«my bad» (c) спать хочеццо :)

shty ★★★★★
()
Ответ на: комментарий от catap

Мужик, не парься, это вообще мой виртуал. Или я его виртуал.

так я и не парюсь, мне с виртуалами не влом общаться :)

shty ★★★★★
()
Ответ на: комментарий от catap

Я знаю один постулат. Портированых приложений нет.

это всё неправды :) портированние приложения есть

другой вопрос что изначально by design сделать портированное приложение далеко не всегда удаётся :)

Иногда hello world перенести нельзя.

иногда - да :)

shty ★★★★★
()
Ответ на: комментарий от catap

чоткие пацанчики на районе сидят уже в своих шалашиках, а их чоткие подруги делают им яйишницу

жёсткие у них подруги :)

shty ★★★★★
()
Ответ на: комментарий от bibi

> Вот я сейчас все брошу и буду на десять страниц давать описание системы. Посреди ночи. Да даже если и полудня. Нет уж, извините, я не стану этого делать. Не вижу в этом ни малейшего смысла. Вполне достаточно указанных граничных условий. Если вы не в состоянии с ними справиться - ничего страшного. Другие люди вполне в состоянии и у них все работает и все счастливы безмерно :)

вы слили и убрали майонезиг?

catap ★★★★★
()
Ответ на: комментарий от shty

> жёсткие у них подруги :)

Ещё они умеют писать на Лиспе!

zabivator
()
Ответ на: комментарий от bibi

> Вот я сейчас все брошу и буду на десять страниц давать описание системы. Посреди ночи. Да даже если и полудня. Нет уж, извините, я не стану этого делать. Не вижу в этом ни малейшего смысла. Вполне достаточно указанных граничных условий. Если вы не в состоянии с ними справиться - ничего страшного. Другие люди вполне в состоянии и у них все работает и все счастливы безмерно :)

вы слили и убрали майонезиг?

catap ★★★★★
()
Ответ на: комментарий от catap

Так мы про процессы или треды?

про наследование

shty ★★★★★
()
Ответ на: комментарий от shty

Не хотел бы я переходить на личности, но хочется увидить какие портируемые приложения сделали вы!

catap ★★★★★
()
Ответ на: комментарий от zabivator

> это не ко мне, ддось «кацапа» :)

Моя жена успешно это делала всю вчерашнюю ночь =)

похоже теперь твой черёд :)

shty ★★★★★
()
Ответ на: комментарий от shty

> похоже теперь твой черёд :)

Она спит, и я наконец-то могу вылезти в интернеты!

zabivator
()
Ответ на: комментарий от catap

Не хотел бы я переходить на личности,

не хотел бы - не перешёл бы :)

но хочется увидить какие портируемые приложения сделали вы!

хорошие :) работают, есть не просят

ЗЫ сил нет, уползаю «всю ночь успешно ddos'ить жену» :)

shty ★★★★★
()
Ответ на: комментарий от catap

>read нужно переключиться в kernel space что бы вызвать syscall который

и скопирует данные из буферов сокета в выделеную тобой память. В момент

переключения будут сброшены все-все-все кеши.

Это какие кеши, например?

ttnl ★★★★★
()
Ответ на: комментарий от shty

Я не трогал вчера ночью его жену! Он подвердит!!!!

catap ★★★★★
()
Ответ на: комментарий от catap

Хм. А как влияет документированость API на совместимость по ABI?

Напрямую. Внося те или иные вещи в официальную документацию разработчики подписывают со мной, как пользователем, контракт о том, что в тех то и тех то пределах указанная ф-ть будет гарантированно доступна. Ни битом больше ни битом меньше. Если же я пытаюсь вызывать из libmysqlclient нечто, что явным образом не описано в док-и или же лезу в неописанные явным образом публичные поля структур - это сугубо мои сложности. И если завтра что-то в них поменяется (а поменяется) претензии я смогу предъявить сугубо себе. А оно мне надо?

    for (i = 0; i < connections->len; i++) {
            MYSQL *m = connections->pdata[i];
......            
            event_set(ev, m->net.fd, EV_READ, read_result, m);

За такое в industrial grade системах нужно бить по рукам. Просто необходимо. Больно.

MYSQL

This structure represents a handle to one database connection. It is used for almost all MySQL functions. You should not try to make a copy of a MYSQL structure. There is no guarantee that such a copy will be usable.

Думаю, идея должна быть более чем понятна.

Впрочем, судя по PRу уважаемый товарищ catap должен быть чрезвычайно продвинут в промышленных системах баз данных. Мне удивительно, почему ему приходится указывать на столь банальные вещи.

Вообще, любая система, пишется под конкретные версии програм. Под них прогоняются перфоманс тесты и пишется для отдела эксплуатации книжечка, как это все трахать...

Но нельзя же доводить этот подход до абсурда! Только 5.0 вышло AFAIR больше 50ти минорных версий. И в каждой из них разработчики MySQL AB имели полное моральное право сломать нафик весь этот хак с обращением ко внутренним полям структуры MYSQL. Прикажете сидеть жестко на 5.0.123? Или руками бекпортить в свою ветку багфиксы? Или как жить то? Чтобы было спокойно за указанное в таймфрейме мажорного релиза будущее.

Вот вы хотите обновить libmysqlclient, вы верите что он станет лучше? А вы верите что там багов новых не будет? А что регрессий?

С таким подходом, наверное, вообще не стоит обновляться. Сел скажем на 5.0.43 и живешь. Хотя почему на 43? Ведь там между ним и 53 было пофикшено N весьма неприятных багов включая переполнение буфера (допустим). Бэкпортить будем?

bibi
()
Ответ на: комментарий от zabivator

Ну суши мы ели не всю ночь, не надо Грязи. А бар надо обновить, это да.

catap ★★★★★
()
Ответ на: комментарий от catap

> Я не трогал вчера ночью его жену! Он подвердит!!!!

Тебе тут про mysql нагружают, кыш тут её поминать.

zabivator
()
Ответ на: комментарий от ttnl

L1, L2...

И все что напредсказывал предсказатель переходов и разместил в кеше, что бы не лазить за данными, уйдет в никуда.

catap ★★★★★
()
Ответ на: комментарий от catap

Это есть в свежих ядрах. В rhel 5 этого нет. я с этого горько плачу и жду rhel 6!

.27? Жди-жди.. Все ждут. Но работать нужно здесь и сейчас. И даже после его выхода все вот так вот по волшебной палочке на 6 не переедет. Ещё там с годик-два а кто-то и больше. Так что долго придется ждать..

bibi
()
Ответ на: комментарий от catap

Есть два пространства выполнения. User space и kernel space. Твой любимый браузер сидит в user space. Когда он читает данные из сокета, он вызвает read. read нужно переключиться в kernel space что бы вызвать syscall который и скопирует данные из буферов сокета в выделеную тобой память. В момент переключения будут сброшены все-все-все кеши.

Даже page cache? Shit! Как знал, что нельзя так опрометчиво связываться с линуксой :(

bibi
()
Ответ на: комментарий от bibi

> for (i = 0; i < connections->len; i++) {

MYSQL *m = connections->pdata[i];
......
event_set(ev, m->net.fd, EV_READ, read_result, m);
За такое в industrial grade системах нужно бить по рукам. Просто >необходимо. Больно.
MYSQL
This structure represents a handle to one database connection. It is used for almost all MySQL functions. You should not try to make a copy of a MYSQL structure. There is no guarantee that such a copy will be usable.
Думаю, идея должна быть более чем понятна.
Впрочем, судя по PRу уважаемый товарищ catap должен быть чрезвычайно продвинут в промышленных системах баз данных. Мне удивительно, почему ему приходится указывать на столь банальные вещи.

А вы отличаете структуру от указателя? Где тут она КОПИРУЕТСЯ?

zabivator
()
Ответ на: комментарий от bibi

> Впрочем, судя по PRу уважаемый товарищ catap должен быть чрезвычайно продвинут в промышленных системах баз данных. Мне удивительно, почему ему приходится указывать на столь банальные вещи.

Откуда в production mysql?

zabivator
()
Ответ на: комментарий от bibi

> Напрямую. Внося те или иные вещи в официальную документацию разработчики подписывают со мной, как пользователем, контракт о том, что в тех то и тех то пределах указанная ф-ть будет гарантированно доступна. Ни битом больше ни битом меньше. Если же я пытаюсь вызывать из libmysqlclient нечто, что явным образом не описано в док-и или же лезу в неописанные явным образом публичные поля структур - это сугубо мои сложности. И если завтра что-то в них поменяется (а поменяется) претензии я смогу предъявить сугубо себе. А оно мне надо?

Документированость API не влияет на ABI. Функция на бинарном уровне есть но не описана. Как измениться функция когда ее опишут?

Но нельзя же доводить этот подход до абсурда! Только 5.0 вышло AFAIR больше 50ти минорных версий. И в каждой из них разработчики MySQL AB имели полное моральное право сломать нафик весь этот хак с обращением ко внутренним полям структуры MYSQL. Прикажете сидеть жестко на 5.0.123? Или руками бекпортить в свою ветку багфиксы? Или как жить то? Чтобы было спокойно за указанное в таймфрейме мажорного релиза будущее.

В команде должен быть человек, который будет в состояние проанализировать изменения в открытом компоненте и сделать ряд тестов, которые покажут, изменится ли поведение системы и если измениться сделать backport нужных кусокв, которые закрывают проблемы которые есть у вас.

С таким подходом, наверное, вообще не стоит обновляться. Сел скажем на 5.0.43 и живешь. Хотя почему на 43? Ведь там между ним и 53 было пофикшено N весьма неприятных багов включая переполнение буфера (допустим). Бэкпортить будем?

Если они внесут при этом не приятный баг, то да, будем.

catap ★★★★★
()
Ответ на: комментарий от zabivator

[noob] вопрос о потоках (комментарий) Тут я описал граничные случаи. КПД - 0. Опровергнете?

Давай так. 1) Пусть запросы тяжелые. Каждый сервер будет тащить максимум 2-3 тяжелые таски. Нахуй 100 подключений до сервера? 2) Пусть запросы лёгкие. 10 000 лёгких запросов через TCP/IP стек устанут продираться - не проще повесить морду на каждый сервер, и делать тупой редирект запросов?

Запросы в пределах одного конкретного сервера - самые разные. И тяжелые и легкие. Даже если все тяжелые, с учетом того, что сервер БД - это минимум 16 а обычно 32 ядра - вот тебе уже умножай на 1.5 рабочих соединения. Эмпирическим же путем после нудного ряда тестов на конкретном железе/сети/звездах/среднем потоке запросов была выведена конкретно для него цифра в ~100 постоянных подключений. Ниже - явно недогребает. Выше - уже просто бестолку, никакого прироста, только память жрет.

В итоге я не понимаю, нахера нам ОДНОВРЕМЕННО 100 подключений к КАЖДОМУ серверу

См. выше.

и 100 серверов воткнутых в один.

А это уже выходит за рамки задачи. 'Нужно!' (tm).

bibi
()
Ответ на: комментарий от bibi

> За такое в industrial grade системах нужно бить по рукам. Просто необходимо. Больно.

Можно раскрыть тему, за что?

catap ★★★★★
()
Ответ на: комментарий от bibi

При одном frontend для них? шардин руками? У вас что-то не так в консерватории!

catap ★★★★★
()
Ответ на: комментарий от bibi

> См. выше.

А это уже выходит за рамки задачи. 'Нужно!' (tm).

Какие задачи нужно запускать, чтобы ОДИН сервер смог раздавать по 10 000 ТЯЖЕЛЫХ запросов на 100 других?

Я что-то не понимаю

1) OLAP. На MYSQL? Бгг Не поверю! Плюс тяжелую аналитику один фиг нужно запускать по одному запросу на сервак + хинтовать + тюнить, иначе сдохнет.

2) OLTP. Узким местом будут не CPU, memory, IO, узким местом на таком железе станет сеть.

Какой канал от этого одного сервера до 100 других?

zabivator
()
Ответ на: комментарий от catap

> 10 гигабит канал, не меньше!

10 гигабит, по 32 ядра на сервер - и mysql? Да ты наркоман что ле?

zabivator
()
Ответ на: комментарий от catap

>Научи!

Страницы будут вытесняться по необходимости. Полностью сбрасываются в специфических
случаях, типа соблюдения когерентности кеша. L1 и L2 линукс не различает.

ttnl ★★★★★
()
Ответ на: комментарий от ttnl

> Страницы будут вытесняться по необходимости. Полностью сбрасываются в специфических случаях, типа соблюдения когерентности кеша. L1 и L2 линукс не различает.

У меня чисто теоритические знания по данному вопросу, но тем не менее - а как с security быть? Ушлый тред сможет прочитать данные другого процесса!

zabivator
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.