
Vova
11.05.2017
18:23:57
я хз не следил в чем вопрос был
Огромный объем мат.структур, массивы, хочу загрузить один раз, дальше работать запуская различные приложухи мат. анализа, все на нете

Egor
11.05.2017
18:24:23
и чем плохо выгружать домен?
а то и просто сделать на двух процессах

Vova
11.05.2017
18:24:35
Read only хотя бы, немутабельные данные

Google

Pavel
11.05.2017
18:24:38
Я и говорю - грузи в основной. 2 домена использовать - это если "пром" и "критичны утечки" (ну и "так есть хорошо")

Ilya
11.05.2017
18:27:23
А ты данные меняешь?

Vova
11.05.2017
18:27:51
Ну загрузил я данные в виде огромного объекта в один домен, а текущую версию софта - анализа в другой. Но доступ из 2го в первый то - сериализация, оверхед - я умру раньше чем расчёты закончатся.
Данные не меняю (пусть так)

Ilya
11.05.2017
18:28:28
Сколько занимает у тебя их копирование в памяти?

Vova
11.05.2017
18:29:06
Клонирование?

Ilya
11.05.2017
18:29:07
Считать их с рам диска сколько времени требует?

Vova
11.05.2017
18:29:51
~ну десятки минут
десяток

Nikita
11.05.2017
18:30:05

Ilya
11.05.2017
18:30:34
Или у тебя данные на диске а потом ты их в объектную модель переводишь?

Vova
11.05.2017
18:30:47
да именно так

Nikita
11.05.2017
18:31:15
вся модель переводится на struct-ы НЕ содержащие ссылок на reference-типы

Google

Nikita
11.05.2017
18:31:27
обращение к другим элементам модели по принципу тип+индекс

Ilya
11.05.2017
18:31:29
Сделай бинарную сериализацию готовых объектов на диск

Nikita
11.05.2017
18:31:49
это даст возможность сделать структуру данных, которая позиционно-независима
т. е. может находиться по любому смещению в оперативке
это всё счастье запихивается в файл на рамдиске именно в таком виде
после чего делается маппинг файла в память
и обращение к данным через unsafe по указателям
не уверен, что это будет достаточно эффективно под виндой
там рамдиски не интегрированы нормально с маппингом файлов

Vova
11.05.2017
18:34:00
Сделай бинарную сериализацию готовых объектов на диск
да делал, стандартным бинарным сериализатором, выйгрыш есть раза в 2, но появляется другой геморой - нужно теперь жить с этим форматом, возникает усложнение пайплайна, а что 10 минут что 5 - многовато, для по факту исследовательской (над данными) работы

Nikita
11.05.2017
18:34:10
либо изначально делать именованый маппинг
и держать его в оперативке третьим процессом

Vova
11.05.2017
18:35:20

Nikita
11.05.2017
18:35:50
основная проблема использования маппинга - он не дружит с указателями от слова совсем

Arseniy
11.05.2017
18:35:57
по-моему, еще на clrium сидристый как-то развлекался с shrared memory

Nikita
11.05.2017
18:36:01
поэтому имеет смысл вместо них использовать индексы

Arseniy
11.05.2017
18:36:08
но я не помню, было там в итоге что-то полезное или нет.

Ilya
11.05.2017
18:36:18

Vova
11.05.2017
18:36:23
мдя, C# явно не заточен под такие задачки...

Nikita
11.05.2017
18:36:25
>сидристый
подойди на дотнексте к акиньшину и спроси, что он думает о сидристом

Google

Nikita
11.05.2017
18:36:54
хоть на каком языке пиши
https://github.com/mapbox/tmpfs-mmap-zero-copy
для интереса упражнения с линуксовым аналогом рамдиска
который tmpfs

anton
11.05.2017
18:39:04
ты с калькулятора?

Igor
11.05.2017
18:39:23

Nikita
11.05.2017
18:39:29
вообще операционки с попроцессной виртуальной памятью этим всем страдают
в этом плане в WinCE была очень хорошая модель памяти

Arseniy
11.05.2017
18:39:50

Nikita
11.05.2017
18:39:53
можно было выделить кусок, который _всем_ процессам виден по одному адресу

anton
11.05.2017
18:40:14
а у кого win под рукой есть? сколько там калькулятор жрет?

Nikita
11.05.2017
18:40:20
мало
старый в смысле
который на обычном винапи
новый хипстерский много

Vova
11.05.2017
18:41:05
я похоже нашёл тему http://geekswithblogs.net/akraus1/archive/2012/07/25/150301.aspx

Nikita
11.05.2017
18:41:27
да, так можно, но есть риск получить бубух

anton
11.05.2017
18:41:31
ну вот qalculate у меня тоже много жрет

Google

anton
11.05.2017
18:41:36
но он на стероидах

Vova
11.05.2017
18:41:44
но выглядит как хак и дыра в нете, чем даже не-продакшн решение

Egor
11.05.2017
18:41:46
12mb хипстерский на винде

anton
11.05.2017
18:41:55
история. мат ф-ии и еще всякая хрень

Nikita
11.05.2017
18:41:58
дешевле не заморачиваться с доменами вообще
а просто грузить новую сборку в главный домен каждый раз

Axm
11.05.2017
18:42:22
Можно извратиться и в домене с данными грузить ремоутингом (тем, древним) логику из второго процесса. Тогда сериализовать по идее ничего не надо.

Nikita
11.05.2017
18:42:36
ремоутинг работает через BinaryFormatter

anton
11.05.2017
18:42:39
если кому-то много жрет - есть bc

Nikita
11.05.2017
18:42:39
если кто не в курсе

Admin
ERROR: S client not available

Vova
11.05.2017
18:42:54

Axm
11.05.2017
18:42:56
И что?

Nikita
11.05.2017
18:43:15
сериализация в итоге будет и тормоза
вообще эта

Ilya
11.05.2017
18:43:37
Может зайти с другой стороны?
Что у тебя там за анализ?

Vova
11.05.2017
18:43:43

Axm
11.05.2017
18:43:46
Я написал изнутри того домена с данными грузить классы второго домена без данных

Nikita
11.05.2017
18:43:47
в дотнеткоре вроде научился GC собирать ненужные сборки

Google

Nikita
11.05.2017
18:43:51
можно на него перелезть

Arseniy
11.05.2017
18:43:55

Vova
11.05.2017
18:44:14

Axm
11.05.2017
18:44:23

Ilya
11.05.2017
18:44:43
А что все таки за анализ то?
Может sql и без разницы сколько данных?

Nikita
11.05.2017
18:45:35
https://github.com/dotnet/coreclr/issues/552
а, нет, не допилили

Vova
11.05.2017
18:46:21
А что все таки за анализ то?
Нене, Sql там не пахнет, многомерные матрицы, графы, всё сильно связанно. Я поэтому даже на hadoop распилить не могу. Всё одним куском.

Nikita
11.05.2017
18:46:48
https://github.com/dotnet/coreclr/issues/552#issuecomment-270227626
Воооо
Собираешь .NET Core с этими патчами
и оно будет выгружать неиспользуемые сборки

Arseniy
11.05.2017
18:47:36
через Assembly.Load
ему сборку переименовывать каждый раз или как ты одну сборку с логикой будешь подргужать при обновлении ее?

Nikita
11.05.2017
18:47:53
из байтмассива всегда заново грузится

Vova
11.05.2017
18:47:55

Ilya
11.05.2017
18:48:02
Не пробовал другой сериализатор? Побыстрее какой нить

Nikita
11.05.2017
18:48:11
и всегда новая

Vova
11.05.2017
18:48:16

Nikita
11.05.2017
18:48:19
даже если точно такая же уже есть

Vova
11.05.2017
18:48:56
я так делал облачный grid computing, слал сборку в узла сети:) наколеночный grid computing

Arseniy
11.05.2017
18:49:37
Эта группа больше не существует