Portál AbcLinuxu, 7. května 2025 12:25

Dotaz: jadro posle SIGKILL memu procesu

17.10.2004 12:52 Petr
jadro posle SIGKILL memu procesu
Přečteno: 317×
Odpovědět | Admin
Dobry den
Resim projekt v C, ve kterem pouzivam strom a k jeho prochazeni pouzivam rekurzivni funkci. Pri reseni do urcite hloubky stromu program funguje bezvadne. Jakmile zadam vetsi hloubku prohledavani, tak se mi po spusteni procesu vypise hlaska: "Zabit (SIGKILL)". Podle meho nazoru dojde pamet pridelena tomuto procesu a jadro ho zabije. Daji se nejak nastavit/zvysit tyto omezeni ? Diky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.10.2004 12:58 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: jadro posle SIGKILL memu procesu
Odpovědět | | Sbalit | Link | Blokovat | Admin
man getrlimit, setrlimit
17.10.2004 18:44 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: jadro posle SIGKILL memu procesu
No nevím. Pokud přijde SIGKILL, tak to bude OOM killer (a bude o tom v logu jádra), protože z rlimitem ovlivnitelných věcí SIGKILL AFAIK posílá akorát při překročení tvrdého CPU limitu, což asi není tvůj případ. V tom případě jsi překročil celkovou virtuální pamět (fyzickou + swap), a potřebuješ větší/další RAM, větší/další swap, nebo vůbec nejlépe nějaký úspornější algoritmus...
17.10.2004 18:54 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: jadro posle SIGKILL memu procesu
Taky můžeš nedržet všechna data v paměti, používat mmap, a hlavně opravit memory leaky ;-) Od rekursivního algoritmu bych totiž spíš čekal, že bude trvat věčnost, než že mu dojde pamět, a pokud mu něco dojde, tak že to bude zásobník, na ten bys ale dostat SIGSEGV. Taky můžeš zrušit overcommit, takže to chcípne sice dřív, ale se SIGSEGV a už v místě, kde to to pamět alokuje....
18.10.2004 14:40 Beda
Rozbalit Rozbalit vše Re: jadro posle SIGKILL memu procesu
sysctl -a | grep overcommit za rovnitko zkus dostat nulu... uprav neco jako /etc/sysctl.conf a potom spust "sysctl -p"

a k tomu sigkill v jadre.

vidim oom ./mm/oom_kill.c , vidim i runlimit na cpu ./kernel/timer.c

potom taky misto pro argumenty programu ./fs/binfmt_elf.c a nejak nechapu put_dirty_page() v fs/exec.c a jffs2 a zarizeni neresim pak uz by tam snad nic moc byt nemelo... leda, ze ze by nekdo napsal napevno cislo signalu do nejakyho makra...

potom taky nepovedeni natazeni stranky ./arc/*/mm/fault.c, ale to vypada na kernel picnic eh teda panic, takze ne jenom proces. a kousek pod tim je zase oom.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.