Re[15]: Lock-based & STM
От: remark Россия http://www.1024cores.net/
Дата: 29.05.08 18:01
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, remark, Вы писали:


R>>Ааа. Ну так опять оптимизация применимая для очень частного случая. Что-то типа — в голову списка добавляются новые элементы. Правильно?


WH>Этих частных случаев сильно больше чем может показаться на первый взгляд.


Кстати, это ведь уже не обмен сообщениями, правильно? Это уже разделяемая структура? Или я чего-то не понимаю?


R>>Это совершенно не проблема. Именно для таких задач существуют экстремально эффективные алгоритмы сборки мусора, с которыми GC общего назначения просто не может конкурировать.


WH>А ГЦ на неизменяемой куче?


А GC будет несколько в приложении?



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[19]: Lock-based & STM
От: Константин Л. Франция  
Дата: 29.05.08 18:01
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Константин Л., Вы писали:


WH>>>.NET с жабкой не подходят.

WH>>>Системой типов не вышли.
КЛ>>почему не подошли? что-то не вижу причин
WH>Их системы типов дырявые как решето.

в каком плане?

WH>Неизменяемых данных нет.


будут в с# вроде

WH>Отсутствие возможности на этапе компиляции отловить рейскондишены.


будут неизменяемые, может и это придет

WH>Есть статические переменные.

WH>...
WH>Даже в сингулярити все плохо.
WH>Например наличие выделенного меня очень растроело
WH>
WH>        public static int Main(String[] args)
WH>        {
WH>            ExtensionContract.Exp! ec = S3TrioResources.Values.ec.Acquire();
WH>            ServiceProviderContract.Exp! ve = S3TrioResources.Values.video.Acquire();
WH>            ServiceProviderContract.Exp! te = S3TrioResources.Values.console.Acquire();

WH>            // Create the device
WH>            device = new S3Device(S3TrioResources.Values);
WH>            device.Initialize();

WH>            // Signal I/O system that we are initialized.
WH>            ec.SendSuccess();

WH>            // create a set of all client endpoints connected to the video
WH>            // interface.
WH>            ESet<VideoDeviceContract.Exp:Ready> vs
WH>                = new ESet<VideoDeviceContract.Exp:Ready>();
WH>            // create a set of all client endpoints connected to the text
WH>            // interface.
WH>            ESet<ConsoleDeviceContract.Exp:Ready> ts
WH>                = new ESet<ConsoleDeviceContract.Exp:Ready>();

WH>.....

WH>            // Close the device
WH>            device.Finalize();
WH>
WH>            Tracing.Log(Tracing.Audit, "Shutdown");
WH>            delete ec;
WH>            delete te;
WH>            delete ve;
WH>            vs.Dispose();
WH>            ts.Dispose();
WH>
WH>            return 0;
WH>        }
WH>    }
WH>

WH>Само оно должно закрываться.

Что это за язык ? а где же using???

WH>Короче от системы типов аля жабка в нормальной ВМ ничего не останется.
Re[20]: Lock-based & STM
От: Cyberax Марс  
Дата: 29.05.08 18:03
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>Что это за язык ? а где же using???

А using ничего не меняет — его тоже можно забыть поставить.
Sapienti sat!
Re[13]: Lock-based & STM
От: remark Россия http://www.1024cores.net/
Дата: 29.05.08 18:07
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, remark, Вы писали:


R>>Задачка приведена несколькими постами выше, там где увёл разговор в сторону на диски.


WH>Ну что поделать если она уходит на диски.

WH>Ну в диски она по любому упирается, а не в кешь процессора.

Да где ж она упирается? Пишем из одного потока 10^6 записей в секунду в журнал. А вся основная обработка идёт в разных потоках параллельно.


R>>Ну пожалуйста-пожалуйста, пишет один. Но у нас же у сервера задача не только писАть, он ещё что-то потом должен делать.

R>>Теперь попытаемся вернуться к исходной теме разговора. Сервер. Лицевые счета. Переводы со счёта на счёт...
WH>Еще раз: Для того чтобы выжать из мурочки еще 100 грамм нужно знать задачу в мелочах.
WH>В данном случае решение очень сильно начинает зависеть от того сколько этих счетов.
WH>Как часто транзакции хотят иметь доступ к одному и томуже счету.
WH>Какие еще действия нам нужны с этими счетами.
WH>...

Счетов — 10^6.
Операции:
Получение баланса по номеру л/с — 56%
Добавление л/с — 2%
Удаление л/с — 2%
Изменение баланса л/с — 20%
Перевод с одного л/с на другой — 20%
Считаем, что операции распределены равномерно по л/с, т.е. коллизии редки.



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[21]: Lock-based & STM
От: Константин Л. Франция  
Дата: 29.05.08 18:07
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, Константин Л., Вы писали:


КЛ>>Что это за язык ? а где же using???

C>А using ничего не меняет — его тоже можно забыть поставить.

т.е. проблема в том, что нам нужно гарантировать детерминированное удаление, или в том, что оно нужно само по себе? При чем здесь система типов?
Re[13]: Lock-based & STM
От: remark Россия http://www.1024cores.net/
Дата: 29.05.08 18:09
Оценка:
Здравствуйте, WolfHound, Вы писали:


R>>Ну вот об этом я начал разговор, что на обмене сообщениями некоторые задачи решаются плохо. Теперь согласен?

WH>Я сказал вобще ни как.
WH>Те ни обменом сообщений, ни какими либо другими плясками с бубном.


По крайней мере 3 способа РЕШЕНИЯ:
1. Крупнозернистые блокировки (применяется более 30 лет)
2. Мелкозернистые блокировки (применяется более 30 лет)
3. Программная транзакционная память (применяется более 5 лет)



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[13]: Lock-based & STM
От: remark Россия http://www.1024cores.net/
Дата: 29.05.08 18:16
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, remark, Вы писали:


R>>Так бы и сказал, что нужен реалистичный пример.

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


WH>В данном случае речь может идти только о кластере. Ибо если сервер не масштибируется то игра сдохнет как только станет хоть скольконибудь популярной.


Не MMO, просто онлайн игра — надо держать максимум сотни игроков, ну хотя впрочем — чем больше получается, тем лучше. Пользователям говорится — если хотите больше, то покупайте более мощный SMP.

WH>А в случае кластера нам ну никак без обмена сообщениями не обойтись.


Даже если есть обмен сообщениями между машинами, то внутри машин как? Допустим машины — 2-процессорные, 4-ядерные xeon'ы, сами по себе серьёзные звери. И не загрузить их как следует просто не вариант.
Внутри машины-то как будем делать?


WH>Ибо шарить нам нечего.

WH>С произвольными частями мира игроки не взаимодействуют ни в одной из извесных мне игр. (хотя я не особо любитель MMORPG)
WH>Везьде есть либо деление на сектора. Либо под группу просто создают клон вселенной.

Ну вот, хорошо. Есть сектор. Его держит один 2-процессорный, 4-ядерный xeon.

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


Как будем решать?


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[22]: Lock-based & STM
От: WolfHound  
Дата: 29.05.08 18:18
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>т.е. проблема в том, что нам нужно гарантировать детерминированное удаление, или в том, что оно нужно само по себе? При чем здесь система типов?

При том что только на уровне системы типов можно гарантировать что объекты определенных типов будут детерминированно финализированны.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[20]: Lock-based & STM
От: WolfHound  
Дата: 29.05.08 18:18
Оценка:
Здравствуйте, Константин Л., Вы писали:

WH>>Их системы типов дырявые как решето.

КЛ>в каком плане?
В прямом.
Хрен программу проанализируешь.

WH>>Неизменяемых данных нет.

КЛ>будут в с# вроде
Позно.
Вся стандартная библиотека пропитана изменяемыми данными.

WH>>Отсутствие возможности на этапе компиляции отловить рейскондишены.

КЛ>будут неизменяемые, может и это придет
Не придет.
Чтобы их исключить нужно очень сильно систему типов поменять.

Например нужно раз и навсегда запретить статические переменные.
Это необходимое условие.

Но ни из C# ни из жабы их никогда не уберут.

КЛ>Что это за язык ? а где же using???

В топку этот костыль.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[16]: Lock-based & STM
От: WolfHound  
Дата: 29.05.08 18:18
Оценка:
Здравствуйте, remark, Вы писали:

WH>>Этих частных случаев сильно больше чем может показаться на первый взгляд.

R>Кстати, это ведь уже не обмен сообщениями, правильно? Это уже разделяемая структура? Или я чего-то не понимаю?
Неизменяемая структура данных.

WH>>А ГЦ на неизменяемой куче?

R>А GC будет несколько в приложении?
Да.
В любом случае ГЦ на неизменяемой куче может быть совсем паралельным.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[17]: Lock-based & STM
От: Cyberax Марс  
Дата: 29.05.08 18:22
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>>>А ГЦ на неизменяемой куче?

R>>А GC будет несколько в приложении?
WH>Да.
WH>В любом случае ГЦ на неизменяемой куче может быть совсем паралельным.
Он и на обычной куче может быть совсем параллельным. Тут вообще проблем нет.
Sapienti sat!
Re[11]: Lock-based & STM
От: remark Россия http://www.1024cores.net/
Дата: 29.05.08 18:25
Оценка:
Здравствуйте, WolfHound, Вы писали:

R>>Для кэшей вот например как бывает. Можно взять N = 100, но тогда и кэшировать сможем в 100 раз меньше информации. А если взять N = 1, то тогда кэшировать сможем в 100 раз больше информации.

WH>Для кешей ооочень хорошо работает url-хешь.
WH>И этот самый url-хешь очень легко разрешает данную делему.


Что такое "url-хешь"? Не могу нагуглить...



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[23]: Lock-based & STM
От: Cyberax Марс  
Дата: 29.05.08 18:31
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

КЛ>>т.е. проблема в том, что нам нужно гарантировать детерминированное удаление, или в том, что оно нужно само по себе? При чем здесь система типов?

WH>При том что только на уровне системы типов можно гарантировать что объекты определенных типов будут детерминированно финализированны.
Это ты вообще никак не гарантируешь с GC. Он тебе прикончит объекты только когда ему захочется.

А ещё шутки с:
public void finalize()
{
   Thread.sleep(50000000); //Happy new year!
}


Тут уж либо подход С++ нужен со статическими деструкторами хотя бы для подмножества объектов.
Sapienti sat!
Re[22]: Lock-based & STM
От: Cyberax Марс  
Дата: 29.05.08 18:31
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>>>Что это за язык ? а где же using???

C>>А using ничего не меняет — его тоже можно забыть поставить.
КЛ>т.е. проблема в том, что нам нужно гарантировать детерминированное удаление, или в том, что оно нужно само по себе? При чем здесь система типов?
Обе проблемы. См. ниже..
Sapienti sat!
Re[24]: Lock-based & STM
От: WolfHound  
Дата: 29.05.08 19:28
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Это ты вообще никак не гарантируешь с GC. Он тебе прикончит объекты только когда ему захочется.

Есть варианты.

C>А ещё шутки с:

В топку финалайзеры.

C>Тут уж либо подход С++ нужен со статическими деструкторами хотя бы для подмножества объектов.

Плохой подход.
Есть лучше.
Сейчас думаю 2 варианта. У одного одни неудобства при использовании, у другого другие.

При этом в отличии от объектов с деструкторами они оба совместимы с замыканиями и оптимизацией хвостовой рекурсии.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[12]: Lock-based & STM
От: WolfHound  
Дата: 29.05.08 19:28
Оценка:
Здравствуйте, remark, Вы писали:

R>Что такое "url-хешь"? Не могу нагуглить...

В общем случае это считаем от запроса или его части хешь и по остатку от деления хеша на N отправляем одному из N обработчиков.
В случае с HTTP считаем от url. Отсюда и пошло.
В частности это позволяет очень сильно повысить кешхит.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[24]: Lock-based & STM
От: Константин Л. Франция  
Дата: 29.05.08 19:30
Оценка:
Здравствуйте, Cyberax, Вы писали:

[]

C>Тут уж либо подход С++ нужен со статическими деструкторами хотя бы для подмножества объектов.


да, черт возьми, именно к этому я клоню. Однако сейчас WolfHound вспомнить про using, хотя в данном контексте я не стал бы
Re[21]: Lock-based & STM
От: Константин Л. Франция  
Дата: 29.05.08 19:34
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Константин Л., Вы писали:


WH>>>Их системы типов дырявые как решето.

КЛ>>в каком плане?
WH>В прямом.
WH>Хрен программу проанализируешь.

ну, ишь че захотел

[]

КЛ>>Что это за язык ? а где же using???

WH>В топку этот костыль.

хе-хе. помню совсем недавно всем известные личности чуть-ли не молились на него
Re[25]: Lock-based & STM
От: WolfHound  
Дата: 29.05.08 19:49
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>да, черт возьми, именно к этому я клоню. Однако сейчас WolfHound вспомнить про using, хотя в данном контексте я не стал бы

Не угадал.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[25]: Lock-based & STM
От: Cyberax Марс  
Дата: 29.05.08 20:05
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Это ты вообще никак не гарантируешь с GC. Он тебе прикончит объекты только когда ему захочется.

WH>Есть варианты.
С GC — никаких вариантов. В принципе, можно дать какую-то верхнюю границу времени финализации, но и это уже составляет проблемы.

C>>А ещё шутки с:

WH>В топку финалайзеры.
Точно.

C>>Тут уж либо подход С++ нужен со статическими деструкторами хотя бы для подмножества объектов.

WH>Плохой подход.
WH>Есть лучше.
WH>Сейчас думаю 2 варианта. У одного одни неудобства при использовании, у другого другие.
WH>При этом в отличии от объектов с деструкторами они оба совместимы с замыканиями и оптимизацией хвостовой рекурсии.
А можно хотя бы крактое описание?
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.