Portál AbcLinuxu, 26. dubna 2024 17:06


Dotaz: Jak změnit INR_OPEN v jádře bez kompilace?

31.8.2005 15:16 ztradebr
Jak změnit INR_OPEN v jádře bez kompilace?
Přečteno: 53×
Odpovědět | Admin
Mám stupidní dotaz, jak mám zvednout konstantu INR_OPEN v jádře definované v linux/include/linux/fs.h z 1024 na vyšší hodnotu? Pomohl jsem si rekompilací jádra, ale nejde to nějak "patchnout" přímo na STD jádře? Mám jádro 2.6.8-24 (Suse 9.2)

Díky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.8.2005 15:40 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak změnit INR_OPEN v jádře bez kompilace?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nestačil by vám příkaz ulimit nebo funkce setrlimit()?
31.8.2005 15:59 ztradebr
Rozbalit Rozbalit vše Re: Jak změnit INR_OPEN v jádře bez kompilace?
Přiznám se, že moc toho asi neumím, našel jsem si ulimit, ale chápu to tak, že to z unlimited (výchozí stav) to zvyšuje restrikce z defaultu, takže tím to naopak víc skrouhnu.

Funkci setrlimit mám chápat tak, že ji použiji v C? bohužel z manu jsem nepochopil, jak ji mám aplikovat na kernel. Prosím moc o nějaký příklad pro blba, linux spíš spravuju, než programuju, tu úpravu INR jsem našel více méně náhodou při studiu zdrojáku a webu.

Díky
31.8.2005 16:03 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak změnit INR_OPEN v jádře bez kompilace?
1. Normální uživatel může limity pouze zpřísňovat, ale jako root můžete i uvolňovat.

2. Proč na jádro? Ta hodnota v jádře je jen default, pro proces platí to, co zdědí od rodiče nebo co si sám nastaví pomocí setrlimit()
31.8.2005 16:25 ztradebr
Rozbalit Rozbalit vše Re: Jak změnit INR_OPEN v jádře bez kompilace?
Ach tak...

No zkusím to tedy přes ulimit, setrlimit neudělám, v tomto případě onen proces je binárka bez source kódů (Pervasive SQL), takže tam nepochodím. Podle všeho si od rodiče (jádra) dědí oněch 1024 a nemění jej. Pochybuji, že by mě u Pervasive vyslyšeli (ačkoliv....)

Díky moc za tip, zkusím se s tím poprat...
31.8.2005 16:31 iSteve
Rozbalit Rozbalit vše Re: Jak změnit INR_OPEN v jádře bez kompilace?
Pokud to takto funguje (nemam zkusenost s setrlimit), tak proc nenapsat trivialni C wrapper?
31.8.2005 16:57 Zaphod | skóre: 37 | blog: zaphod_blog
Rozbalit Rozbalit vše Re: Jak změnit INR_OPEN v jádře bez kompilace?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Niektore konstanty jadra sa daju menit dynamicky - je to potrebne pre velke aplikacie (napriklad Oracle).
sysctl -w premenna=hodnota
sysctl -a vypise premenne

pozrel by som sa na premenne zacinajuce na fs. Neviem co je to za premennu ale google na retazec INR_OPEN sysctl nasiel dost odkazov.

pre trvalu zmenu sa zapise premenna a hodnota do /etc/sysctl.conf
31.8.2005 17:14 Zaphod | skóre: 37 | blog: zaphod_blog
Rozbalit Rozbalit vše Re: Jak změnit INR_OPEN v jádře bez kompilace?
opravujem - nie su to konstanty, su to premenne ktore maju definovanu standartnu hodnotu ktora vyhovuje beznym aplikaciam.
31.8.2005 17:51 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: Jak změnit INR_OPEN v jádře bez kompilace?
Sysctl je jedno rozhraní, druhé je adresář /proc/sys. Kdo radši cat a echo než sysctl, nechť se podívá tam. ;-)
1.9.2005 08:59 ztradebr
Rozbalit Rozbalit vše Re: Jak změnit INR_OPEN v jádře bez kompilace?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Och jak prosté to bylo!

Použil jsem ulimit přímo v rc.d skriptu co spouští onu službu a je vystaráno. Díky moc všem, o ulimit jsem do teď vůbec nevěděl.

BTW: v sysctl ani v proc tato hodnota není, to jsem si zjišťoval kdysi před tou kompilací jádra. Sice nevím proč, ale nikde jsem ji nenašel (zkoušel jsem hledat hodnotu 1024 ve všech proměnných)

Takže - problém vyřešen, jdu na další :)

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.