Михаил @mikhanoid
ИММ УрО РАН
Information
- Rating
- Does not participate
- Registered
- Activity
Specialization
System Software Engineer, scientific programming
Scheme
C
Assembler
Linux
Maths
Julia
Compilers
Math modeling
Machine learning
Computer Science
ИММ УрО РАН
Софт у нас на разных языках. Кое что переписываем на ассемблер, если видно, как оптимизировать можно.
В UNIX есть понятие - группа процессов, почему по её номеру нельзя ориентироваться? Или на крайний случай просто по uid.
А что есть тип соединения с корневой системой? Я пока глупый в openvz и мне пальцем надо показывать. Если имеется в виду то, как к сети доступ выдан, так при помощи такой штуки:
vzctl set 101 --netdev_add bond0 --save
Взял из OpenVZ-Users-Guide.pdf.
Так что это не вариант, несмотря на все достоинства решения. Если мне не верите или считаете, что мы - существа криворукие и плоскоголовые, к программированию на java не приспособленные, можете сами тесты погонять, благо математических библиотек, написанных на java в internet много.
Мне нужен простой механизм: ограничить группу процессов по памяти. Я не понимаю, какие проблемы завести счётчик физически использованных страниц для пользователя ли, для группы ли - не суть важно, и если счётчик переваливает определённый предел, убивать именно эту группу процессов или выкидывать из системы именно этого пользователя.
Зачем для этого обязательно нужен сложный openvz, которй, кстати, только что убил 80% производительности тесту LAPACK. Почему в VPS'ах так жутко падает скорость передачи данных? Вместо 1.5 гигабита в секунду на бондинге получаю .7 гигабита плюс дикую загрузку процессора в 50%. Что надо исправить в настройках?
Ну так и параллелят. Но нужно стараться сделать куски как можно большими, потому что так меньше накладных расходов на пересылку данных. При этом с подбором подходящего размера проблемы - не только, ведь, матрицы в программе фигурируют, есть ещё другие переменные, которые тоже память занимают. А чтобы подбирать оптимальный размер, нужен механизм, который скажет: нет уважамый, столько памяти мы тебе уже не выделим.
Угу. Это вы скажите начальникам из правительства РФ, которые всё увеличивают и увеличивают финансирование исследований : ) Из последних сил увеличивают, взмокли уже все и раскраснелись, штаны у них бедненьких и пиджаки по швам трещат, а увеличить никак не могут.
Но с другой стороны, если Linux не позволяет эффективно разобраться пользователю с этой проблемой. И если для этого нужны дополнительные программисты, администраторы, финансирование, то возникает вопрос к эффективности самого Linux. Тем более, если это всё можно решить простыми методами в ядре, без привлечения к ответу правительства РФ?
Они, конечно, оптимизируют, выдумывают новые методы, защищают на этом кандидатские и докторские и сами пишут книги по 'численным методам'.
Java использовать никакого смысла нет. Ведь, всё это делается в погоне за скоростью вычислений, Java же на расчётных задачах весьма неспешно работает http://shootout.alioth.debian.org/, а ускорителей у нас для неё нет.
cat file | vzctl exec ID /somepath/somebin some args &
То, вывод cat будет передан на stdin программы, которая будет запущена в VE, а в $! будет pid процесса, под которым он будет виден в VE0?
Если так, то хорошо. Остаётся только проверить, насколько хорошо это всё с myrinet дружит.
Какой профиль Вы посоветуете, как гуру?
Вы неверно расставляете акценты в моих постах. Я же не говорю, что linux - плохая система. Но в нём, в самом деле есть, что исправлять. Если linux'оиды не хотят прислушиваться - это не мои проблемы, потому что мы года через два выкатим своё ядро системы для суперкомпьютеров со всеми нужными функциями. Именно поэтому, я ничего ни от кого не требую. Если честно, мне даже выгодно, чтобы недостатки оставались : ) Можно будет тыкать потом в них пальцем на защите и говорить: смотрите, у них технические недостатки, а у нас таких нет.
При записи 0 в выделенную память, вылетают произвольные процессы. Включение overcommit ситуацию спасает, но опять же, можно запустить 20 процессов (в системе 8 гигабайт RAM и 16 файла подкачки), каждый из которых выделит по гигабайту памяти.
Что я делаю не так?
Ну. Мне на это отвечают: не нравится, не кушай, покупай другое ПО. Ну, хорошо. Но почему бы не прислушаться к тому, что у пользователей вызывает проблемы, и не исправить ситуацию? Какие с этим сложности у разработчиков ядра? Это же не личное им оскорбление, а просто указание на ошибку.
Я понимаю, конечно, что мне сейчас скажут: если надо, исправляй сам. Но я в ответ спрошу, а вы пробовали сами хоть что-нибудь исправить в Linux? Никакой же документации по структуре ядра нет, а чтобы разобраться в исходниках и понять, как всё работает нужен, такое ощущение, не один год. Получается, community устроено так: либо ты linux'оид по жизни, и ничем другим заниматься уже не в праве и не в состоянии, либо ты не linux'оид и тебя никто слушать не будет, а будут показывать пальцем и говорить фууу, даже если ты предлагаешь дельные вещи. Хм... Эта нетерпимость несколько раздражает. И, с небезосновательной претензией на истину можно сказать, что мешает продвижению системы в массы.
A - это размер адресного пространства. для каждого процесса.
D - это размер сегмента данных, который при загрузке бинарника формируется для каждого процесса.
M - это залоченные в памяти страницы
S - размер стека
Чем именно мне воспользоваться?