Блогът на Амин

Всякакви мисли за живота, и дори така - справка за себе си

И така, първата радост от използването на многопоточност в Perl беше разбита от брутален рейк. ...

Сценарият, който работи доста добре на 300 нишки, умира при опит да обработи 600 нишки, въпреки факта, че завършването им е написано правилно. Нека вземем тестов скрипт като този:

Стартираме го в Linux и виждаме напълно шибан:

След дълго четене на mans и googling откриваме каква функция призовава перлата и вече на много по-ниско ниво откриваме същността на проблема във форума на съвсем друга тема: http://forum.sources.ru/ index.php? showtopic = 247550 и се възхищавайте:

системата фалира за цели 9 (!) метра RAM. Освен това, когато тази нишка завършва с pthread_exit (0); паметта не се освобождава.

Отваряме втората обвивка, стартираме скрипта от отделен потребител (така че да няма ирелевантни процеси в htop с филтър от потребител) и съзерцаваме невероятното:

танц
Като цяло, вмъквайки паузи в скрипта, успяхме да разберем, че въпреки нишките на повикванията-> изход (0);, в края на нишката, разпределената за нея памет не се освобождава. Е, тъй като има много нишки за създаване и всеки изяжда чудовищните 9Mb, тогава с VIRT = 3Gb скриптът съвсем естествено идва до полярна лисица.

Но най-лошото е, че при FreeBSD 7.3 няма такъв проблем, въпреки че консумацията на памет също е прецакана:

Разбира се, за мен е добре, че скриптът, от който се нуждая, в крайна сметка ще работи върху пърженето, но по някакъв начин такива грешки не са никак приятни, крос-платформата е влязла в путката и това е много, много лошо.

Споделя това:

Хареса това:

След навигация

Karman пише: Trolololololo. 111 едно. Винаги ли знаех? че аргументът "Всичко работи за мен КАКВО Е?" убит в нашия несъвършен свят.

И какъв никсам идва? И тогава има много от тях тук ... JunOS, Ubiquity AirOS и нов Cisco IOS - опасност? И колко спешно трябва да премина от фряк и федор към Windows-2008? Между другото, колко лесно е да използвам вградените инструменти в Windows-2008, за да объркам скрипт, който ще се свърже с базата данни, вземете списък с хардуер и портове от тук и го настройте автоматично чрез telnet/sssh за достатъчно време acl-ki на 600 парчета желязо ?

Perlovka пише: И Perl харесва mnu, въпреки че други се влюбват в лошата тема. Вече седем години като на "перлен ечемик" и полетът е нормален. Наистина има няколко задръствания, но това не е критично. Езикът е добър. Бих искал да прочета публикациите на г-н Амин за перлата на http://forum.script-coding.com/ - нещо като фокус за сценаристите. Дори въпреки големия си опит в програмирането, имам още много да науча.

Между другото, можете ли да ми кажете колко е красиво за мен да се измъкна от такова дупе с многопоточност? Досега имах идеята да взема като параметри броя на хардуерните парчета и номерата на блоковете от (0 до 6, например), а след това последователно да стартирам 6 различни процеса, всеки от които ще обновява паралелно 100 хардуерни парчета. Но това вече ще са два или три скрипта, а не един + параметър LIMIT m, n за SQL заявката. Може би има по-малко хрупкаво решение? Не искам да чакам три минути за последователно обхождане в една нишка ... Благодаря за поканата, но по някакъв начин се обръщам към форуми чисто по актуални въпроси, а това най-често са форуми на производители на софтуер и хардуер. Предпочитам да качвам и модерирам информацията си сам, без да поглеждам назад към никого и не се смятам за толкова напреднал сценарист-гуру.

Читател пише: Веднага ще ви кажа, харесвам много от прочетеното тук. Съгласен съм с много неща, но понякога се увличаш. Това вече е фанатизъм: "Между другото, колко лесно е да объркате скрипта, който се свързва с базата данни с вградени инструменти в Windows-2008, вземете списък с хардуер и портове". Има ли нещо, което ви пречи да инсталирате перла на Windows? Или друг интерпретатор? Пишете ли скриптове директно в ядрото в асемблер в bsd или fedor? 🙂 или дори двоични файлове?:) перла изглежда не е "вграден инструмент" 🙂

MaitreHuySkilometer пише: [Shabby] Обидите и личностите не са добре дошли тук. Извинете, ако можете.

Читател, ключовата дума тук е „инсталиране“. За всяко елементарно кихане трябва да инсталирам, актуализирам, поправям и доста често - рестартирам три пъти. Перла - той е в хранилищата. И основният скъпоценен камък е да, вграден инструмент. Понякога, разбира се, трябва да инсталирате модули, но за това има хранилища. И в Windows няма нищо с подобно ниво на удобство и не е близо. И през следващите пет години определено няма да се появи. Не искам да се забърквам с Windows, стигна ме до самия дроб. И между другото, ако сте започнали да говорите за асемблер и дори машинни кодове, както разбирам, нивото ви на компетентност ви позволява да оцените сложността на разработката по такъв метод? Ако е така, защо говорите за ядрото? ?

mo (u) Z пише: Не разбирам всички тези холивари: "Windows го разбра", "Linux shit" ... Нека разгледаме всичко трезво: има по-удобни за използване на nix и такива, които са по- приятно с Windows - и да нося глупости за това, което мога да направя в тази операционна система, или иначе не, няма нищо общо с обективността на данните, защото няма нищо перфектно от това, което се прави от човек, винаги ще има някои вид грешка и следователно изборът на операционни системи, езици за програмиране, интернет браузъри, стилове на облекло, жените (подчертайте според случая) завиждат директно в крайна сметка от личните предпочитания, нищо повече. Е, Амин Никса харесва, и какво от това? Например харесвам OpenSUSE и Fedora, но по-често ми се налага да работя с Windows. И никога не съм харесвал Perl като език за програмиране, въпреки че понякога се налага да кодирам в него. Предпочитам Python (някои биха го нарекли модно изявление, но аз просто обичам този език), когато става въпрос за интерпретативност. Що се отнася до компилацията, харесвам Assembler и C (и чист, а не сплескан).