[08:06:29] <landgraf> доброго утра
[10:59:24] <vgodunko> Доброго!
[13:47:28] <landgraf> чтобы запускать qemu (виртуальные машины с высоким аптаймом) что лучше юзать? Gnat.Expect ? Gnat.OS_Lib? ... ?
[13:50:52] <subj_rs> я б их вообще неблокируясь запускал ,и периодически чекал на предмет работает/нет )
[13:51:19] <subj_rs> ну или под каждую - отдельный таск
[13:51:29] <virtual_lark> в идеале нужно написать привязку адских интерфейсов для libqemu.
[13:52:03] <subj_rs> но каждый таск - жирно
[13:56:54] <landgraf> а для libqemu/libkvm есть нормальное описание?
[13:57:14] <landgraf> subj_rs, это довольно важная задача для запускателя, думаю, можно пожировать
[14:00:34] <subj_rs> лучше poll
[14:00:56] <landgraf> subj_rs, а если для каждой VM делать таск, который будет следить за машиной, ( там же еще надо monitor чекать) - это норм?
[14:00:59] <landgraf> что за poll?
[14:03:46] <landgraf> virtual_lark, http://www.fceia.unr.edu.ar/lcc/jcc/2009/kvm-as-a-learning-tool.pdf вот к этому привязку?
[14:05:57] <yeo> если gcc не передавать -march=xxx он использует самый общий набор инструкций? знает кто?
[14:07:20] <coopht> какой ему при компиляции сказали, такой он и будет использовать по умолчанию
[14:07:45] <coopht> можно gcc попробовать запустить с опцией -### при компиляции чего нить
[14:09:28] <yeo> а как узнать "какой ему при компиляции сказали"?
[14:10:34] <yeo> gcc -v выдает всякую дрянь типа --prefix и --enable-/--disable-
[14:11:02] <yeo> т.е. в configure не задавалось ничего похожего
[14:12:36] <yeo> я хочу bootstrap собрать для x86-64, но не знаю какой -march= поставить, чтобы работал на любом x86-64 :(
[14:14:24] <virtual_lark> landgraf: да
[14:15:19] <virtual_lark> yeo: какой при компиляции сказали - эта инфа не в gcc -v отображается?
[14:15:56] <coopht> --with-arch=i686 ?
[14:16:34] <landgraf> virtual_lark, это слишком сложно )
[14:16:49] <yeo> нету такого, хотябы в gnat gpl 2010 запусти
[14:17:12] <yeo> --build=x86_64-pc-linux-gnu
[14:21:58] <coopht> gcc -dumpspecs
[14:22:05] <coopht> cc1_cpu:
[14:22:16] <coopht> в этой секции будет написано
[14:24:11] <yeo> %{march=native:%<march=native %:local_cpu_detect(arch) %{!mtune=*:%<mtune=native %:local_cpu_detect(tune)}}
[14:25:19] <landgraf> там что-то одни deprecated :)
[14:33:47] <vgodunko> yeo: ничего не указывать.
[14:34:10] <vgodunko> Если конечно компилятор собран адекватным образом.
[14:35:06] <yeo> вот и я к тому же склоняюсь
[14:36:22] <vgodunko> Помните, Gentoo и аналогичные - собраны неадекватным образом.
[14:39:07] <yeo> но но!
[14:40:26] <landgraf> Gentoo божественна )
[14:41:14] <subj_rs> генту - поделие студентов
[14:41:18] <yeo> адакоре конечно таинство "адекватной" сборки не раскроет никогда :)
[14:41:48] <coopht> Gentoo божественна
[14:42:04] <landgraf> subj_rs, марсианских студентов прошу заметить
[14:42:29] <vgodunko> Речь идёт о любви дистрибутива к изобретению собственных значений по умолчанию.
[14:42:33] <yeo> subj_rs, зато Ubuntu делали настоящие профи?
[14:42:48] <coopht> это такие дситрибутивы как Suse, Centos и т.д. обычно криво собраны
[14:42:51] <subj_rs> убунту делали хомячки
[14:42:53] <vgodunko> Для Gentoo это качественно подобранные национальные особенности нижележащего железа.
[14:43:49] <vgodunko> Как они построили GCC одноим им и известно.
[14:44:48] <vgodunko> Дистрибутивы промышленные - SUSE, Red Hat, etc. - собирают без использования глубокой оптимизации под конкретное железо.
[14:45:43] <yeo> то как построили gnat gpl известно только АдаКоре
[14:46:16] <yeo> в этом смысле мне gentoo предпочтительней, тк. я знаю как собираю gcc а как его собирает адакора - нет
[14:46:19] <subj_rs> вам и процессоры стопицот ядерные, 3гигагерцовые, и памяти гигабайты - а вы все с ключами оптимизации возитесь
[14:48:57] <yeo> да, ставьте -O0 фигле парицца :D
[14:50:03] <subj_rs> вот вот
[14:58:05] <vgodunko> AdaCore использует собственный механизм исключительно из-за наследия.
[14:58:18] <vgodunko> Потихоньку он приближается к механизму FSF.
[14:58:38] <vgodunko> Но есть и коренное отличие - количество прогоняемых тестов.
[17:07:03] <yeo> http://www.ada-ru.org/gentoo/overlay во! я сделал оверлей! и gnat-gpl-2010 в нем! :)
[17:07:15] <yeo> надо добровольцы на потестить :)
[17:07:49] <subj_rs> неее
[17:08:08] <subj_rs> Прежде чем установить пакеты входящие в overlay вам .. вам потребуетца месяц ипатцо с установкой генты )
[17:08:35] <yeo> предпологается у добровольца стоит гента :)
[17:13:05] <landgraf> yeo, gnat-gpl вроде и в портежах есть, только старый и не собирается )
[17:16:46] <vgodunko> Расслабьтесь с GPL 2010, GPL 2011 уже на мази
[17:16:52] <yeo> да, 2008 там. что-то шаповалов тормозит с 2010 :(
[17:17:15] <yeo> поэтому и решил ему помочь и замутить оверлей :)
[17:18:08] <yeo> x86_64 и i686 собралось нормально, проблема с ppc т.к. нет машины такой :)
[17:18:12] <landgraf> а когда эта мазь будет для всех?
[17:20:00] <landgraf> yeo, а не будет проблем с установленным gcc-4.4 ?
[17:21:02] <landgraf> vgodunko, когда счастье будет простым смертным?
[17:21:26] <vgodunko> В конце мая - начале июня
[17:21:42] <vgodunko> На Ada Europe обычно официальная презентация.
[17:22:11] <yeo> оно же в сторонку ставит gnat-gpl
[18:35:44] <yeo> /me пошел ставить gentoo под qemu-system-ppc :)
[18:52:11] <c0opht> давай я в твой overlay залью ada компилятор от fsf ?
[18:52:24] <c0opht> я для него ебилды делал
[18:53:15] <yeo> могу дать тебе доступ в git и зальешь. А они круче тех что у шаповалова в gentoo?
[18:59:30] <c0opht> новее
[19:00:04] <c0opht> я ему сабмитил репорт, а он как то написал, что ему некогда
[19:00:09] <c0opht> это было еще в прошлом году
[19:02:57] <c0opht> http://bugs.gentoo.org/show_bug.cgi?id=317633
[19:04:49] <c0opht> о, нифига себе =)
его он оказывается добавил в порты
[19:20:40] <yeo> http://www.ada-ru.org/gentoo/git_hosting
[19:22:57] <landgraf> subjrs, что за poll ?
[19:23:14] <subjrs> опрос
[19:23:58] <landgraf> subjrs, а почему таски жирно?
[19:24:13] <subjrs> а сколько планируется виртуалок запускать?
[19:25:10] <subjrs> и главное как - вплане на локальной машине или удаленно
[19:25:48] <landgraf> subjrs, хз, зависит от мощей, ест-но. все локально
[19:26:45] <subjrs> landgraf: ну всмысле ты порядка 1000 тасков можешь запустить максимум на 32-х битной системе ,либо уменьшать размер стэка чтобы больше запустить - такие моща планируются? )
[19:28:02] <subjrs> видимо нет, если локально.
[19:28:24] <landgraf> subjrs. 32-х битных систем не планируется в принципе (на них нет spice-server), локально 1000 машинок запустить это что-то совсем гигантское надо - поэтому нет
[19:28:48] <subjrs> тогда можно и по таскам вешать )
[19:29:05] <subjrs> и центральный таск, мониторящий все остальные
[19:29:15] <landgraf> subjrs, скорее всего предел упрется в ОЗУ, считай в среднем по 1Gb на виртуалку с учетом ksm будет по 500-700 метров в среднем.
[19:29:34] <landgraf> при наличии 24 Gb (сейчас) получается максимум 50 виртуалок
[19:29:46] <subjrs> нармальна, самое оно
[19:30:09] <landgraf> но еще нужны таски - джоб менеджеры - но это мелочи
[19:30:20] <landgraf> ок, буду делать таски
[19:30:47] <subjrs> приложение в 50-100 тредов - довольно прикольно )
[19:31:05] <landgraf> subjrs, падуче? )
[19:31:21] <subjrs> не, просто прикольно
[19:31:27] <landgraf> subjrs, вон эрлангер рядом сидит - у него 10000 процессов - и не жужжит
[19:31:34] <subjrs> там другие таски
[19:31:40] <subjrs> падучие )
[19:31:41] <landgraf> всякую хню сует в процессы
[19:31:43] <landgraf> )))
[19:32:36] <subjrs> на эрланге можно и мульон якобы потоков запустить
[19:36:38] <landgraf> subjrs, а чем они хуже адских?
[19:37:04] <subjrs> они легковесные и реализуются в виртуальной машине
[19:37:08] <subjrs> то есть не нативные
[20:35:33] <landgraf> в Gnat.Expect есть аналог Wait_Process? как узнать когда процесс завершился?
[20:36:04] <subjrs> landgraf: врятли кто вкурсах
[20:36:30] <subjrs> гнат.expect насколько помню просто оболочка над системным expect
[20:45:43] <landgraf> subjrs, в os_lib есть wait_process, только там нет Get_Error_Fd и Get_Out[ut_fd
[20:46:07] <landgraf> какая-то хрень )
[20:47:53] <subjrs> не юзал, не знаю
[20:50:59] <landgraf> function Non_Blocking_Spawn
(Program_Name : String;
Args : Argument_List;
Output_File_Descriptor : File_Descriptor;
Err_To_Out : Boolean := True) return Process_Id;
[20:51:00] <landgraf> во
[20:51:06] <landgraf> то что доктор прописал
[20:51:40] <landgraf> "Non_Blocking_Spawn" should not be used in tasking applications
[20:51:45] <landgraf> во как
[20:53:21] <subjrs> а зачем тебе нон_блокинг если хочешь для каждой виртуалки отдельный таск?
[20:53:38] <subjrs> пусть таск запускает виртуалку и блокируется ожидая когда она завершится
[20:54:17] <landgraf> а stdout кто с нее брать будет и главное как? :(
[20:54:58] <landgraf> в общем-то при наличии qemu-монитора можно было бы и без него обойдись, наверное
[20:55:45] <subjrs> стдаут отдельным таском брать
[20:59:19] <vgodunko> Простейший способ - использовать Qt
[20:59:20] <vgodunko> Ж-(
[21:00:29] <landgraf> фигасе простейший
[21:05:55] <vgodunko> Дело в том, что это простейший и правельниейший.
[21:05:57] <vgodunko> :-(
[21:06:28] <subjrs> еще можно импортировать функцию system
[21:28:53] <landgraf> subjrs, os_lib renames system.os_lib
[21:29:14] <subjrs> не, сишная функция system
[21:30:33] <subjrs>
procedure Sys (Command : String) is
function CSys (C : System.Address) return Integer;
pragma Import (C, CSys, "system");
r : Integer;
C : String := Command & ASCII.Nul;
begin
r := CSys (C (C'First)'Address);
end Sys;
[21:31:11] <subjrs> сюда любую команду пихнуть можно, хоть баш-скрипт )
[21:32:04] <subjrs> но эт так, к слову
[21:32:41] <subjrs> жаба раньше через это вызывала wget с урл сайта с погодой и потом выдавала то, что wget засасывал оттуда
[21:33:09] <subjrs>
function Read_File (FN : String) return String is
FD : Gnat.OS_Lib.File_Descriptor;
RC : Integer;
use Gnat.Os_Lib;
begin
FD := Open_Read (Name => FN, FMode => Binary);
return R : String (1 .. Integer (Gnat.Os_Lib.File_Length (FD))) do
RC := Gnat.Os_Lib.Read (FD, R(R'First)'Address, R'Length);
Gnat.Os_Lib.Close (FD);
end return;
exception
when Event: others =>
return Ada.Exceptions.Exception_Information(Event);
end Read_File;
мож тоже пригодитца )
[21:41:03] <landgraf> а, это я знаю. spawn получше будет, думаю
[22:05:43] <vgodunko> О! У меня восстановилась связь!!!
[22:06:27] <vgodunko> Так вот, Qt построена на основе событийно управляемой парадигмы. А это значит, что не потребуется иметь тучу задач/нитей.
[22:07:40] <vgodunko> Всё, что дают всякие System и GNAT оринетировано на обычное последовательное приложение, что не эффективно совершенно при необходимости параллельного управления несколькими процессами.
[22:09:34] <landgraf> http://fpaste.org/w4nh/ что я не так делаю?
[22:10:07] <landgraf> хм, constant
[23:22:09] <landgraf> как можно сделать таску, время жизни которой = время жизни переменной тэгового типа? такое вообще вохможно?
[23:23:52] <landgraf> или я странного хочу?
[23:32:59] <c0opht> адскую задачу ?
[23:34:16] <landgraf> да, но уже что-то получилось, вроде
[23:36:23] <c0opht> нужно сделать теговый тип Limited_Controlled.
в Intialize задачу стартовать,
в Finalize останавливать
[23:37:21] <landgraf> хм
[23:37:22] <Жаба> landgraf, и не говори
[23:48:05] <landgraf> c0opht, я сделал неправильно наверное - создал поле ST_Task в записи тэгового типа и в конструкторе сую туда new some_task
[23:48:32] <landgraf> memory leak ?
[23:49:11] <c0opht> по видимому да
[23:50:31] <landgraf> :(
[23:50:48] <landgraf> надо разбираться с Limited типами
[23:51:06] <landgraf> и со многими-многими другими хренями