Portál AbcLinuxu, 5. května 2025 16:42

Dotaz: Málá hodnota VmallocTotal paměti

5.5.2014 16:06 Pinon | skóre: 7
Málá hodnota VmallocTotal paměti
Přečteno: 569×
Odpovědět | Admin
Ahoj, mám problém s iptables, zavádím do nich tisíce pravidel a u nějakého hw mi to selhává
iptables: Memory allocation problem
Problém bude, že když si vypíšu paměť, tak mám nízkou hodnotu VmallocTotal: ... kB tedy množství virtuální paměti. Swap na zařízení nemám a dělat ho tam nechci, protože je systém většinou nahrán na SD kartě. Zpátky k problému - jak mohu navýšit virtuální množství paměti?

Posílám výpis inforamcí o paměti
root@Shaper:/# cat /proc/meminfo 
MemTotal: 2039756 kB
MemFree: 1872264 kB
Buffers: 3952 kB
Cached: 63712 kB
SwapCached: 0 kB
Active: 29512 kB
Inactive: 44372 kB
HighTotal: 1143680 kB
HighFree: 1034220 kB
LowTotal: 896076 kB
LowFree: 838044 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 6240 kB
Mapped: 5372 kB
Slab: 51596 kB
SReclaimable: 7280 kB
SUnreclaim: 44316 kB
PageTables: 304 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 1019876 kB
Committed_AS: 29984 kB
VmallocTotal: 114680 kB
VmallocUsed: 39172 kB (nyní je hodnota dobrá, ale při zavádění pravidel paměť nestačí)
VmallocChunk: 37672 kB
Díky za vaše odpovědi.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.5.2014 16:10 drunkezz | skóre: 34 | blog: kadeco
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Odpovědět | | Sbalit | Link | Blokovat | Admin

tipnem....posunut kernelu vmalloc=XXX parameter?

ale imo je to nedostatocny hw riadne na taku hrbu pravidiel

D.

5.5.2014 17:21 Pinon | skóre: 7
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Jde o vlastní úpravu slackware distribuce. Funguje to, že je vytvořený image, který se při bootu nahraje do paměti. Stejný image je použitý na více hw a na některém je hodnota jiná, např:
root@Shaper2:~# cat /proc/meminfo 
MemTotal:       505000 kB
MemFree:        331284 kB
Buffers:          3952 kB
Cached:          62436 kB
SwapCached:          0 kB
Active:          30436 kB
Inactive:        44892 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       505000 kB
LowFree:        331284 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:           0 kB
AnonPages:        8960 kB
Mapped:           4540 kB
Slab:            52912 kB
SReclaimable:     7368 kB
SUnreclaim:      45544 kB
PageTables:        332 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:    252500 kB
Committed_AS:    33868 kB
VmallocTotal:   516088 kB
VmallocUsed:     44480 kB
VmallocChunk:   385568 kB
Trošku nechápu, jak může být virtuální paměť větší než je fyzická, swap tam žádný není.

Předpokládám, že bych to kernelu musel předhodit při bootu v lilo, nebo by se to dalo navýšit za běhu? Nikdy jsem nic podobného nedělal.

5.5.2014 21:42 Milan Roubal | skóre: 25
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Google nasel toto, mozna posledni odstavec pomuze.
5.5.2014 23:18 aceman | skóre: 27
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
VmallocTotal asi nie je len virtualna pamat. Mne napr. na 64bit stroji dava toto: MemTotal: 6117708 kB VmallocTotal: 34359738367 kB

Pritom swap je len 2GB, RAM 6GB. Zrejme to bude nieco ako adresovatelna RAM (aj ked zatial neexistuje), pripadne dalsie I/O adresy a pod. Pripadne nejake hry s low memory (pod 1GB), ako pise clanok.
6.5.2014 09:19 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Na x86_64 je všechna paměť "low" (to je jedna z mnoha zcela zásadních výhod).
6.5.2014 12:27 Radek Isa | skóre: 14
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Virtuální paměť je v podstatě paměť kterou muzes adresovat a nema to nic společného s velikostí instalovaných pamětí. Virtuální paměť vidí proces a nezajímá se to kde tato paměť je fyzicky ulozena, o to se stara jadro OS + procesor. Pokud se o tom neco chces dozvedet tak hledej strankování paměti (paging).pamětí
6.5.2014 09:05 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Odpovědět | | Sbalit | Link | Blokovat | Admin
VmallocTotal je velikost oblasti používané pro bloky alokované pomocí vmalloc() a s množstvím virtuální paměti moc společného nemá (spíš skoro nic). Hodnota závisí na architektuře, např. na x86_64 to je
  0xffffe8ffffffffff - 0xffffc90000000000

tj. přibližně 32 TB. Na i586 je to pochopitelně podstatně méně, definice je složitější, ale mělo by to vycházet na 119-135 MB (což víceméně odpovídá té vaší hodnotě).

V každém případě ale není jisté, že je to opravdu váš problém. Netfilter sice vmalloc() používá, ale vypadá to, že spíš pro různé hashovací tabulky, takže je docela dobře možné, že váš problém je spíš SLAB.

Tak či onak, sice by to asi nějak vytunit šlo, ale jestli ten stroj má sloužit primárně jako firewall, router nebo něco podobného, má 2 GB paměti a nemá 32-bitový procesor, šel bych prostě cestou nejmenšího odporu a nainstaloval tam 64-bitový systém. Tam podobné problémy s nedostatečným virtuálním adresovým prostorem řešit nebudete muset.

6.5.2014 11:05 LinuxakMichal
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Mozna jeste mensi odpor bude klast cesta predani jadru parametru vmalloc, ktery vynuti rezervaci zvoleneho mnozstvi (paklize to je mozne) pameti. Minimalne se zjisti, zda za to opravdu muze tohle.
6.5.2014 11:19 LinuxakMichal
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Pro upresneni- nerezervuje se pamet ale adresni prostor (coz je na 32bit systemu znacne omezeny zdroj)
6.5.2014 11:32 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Tu "cestu nejmenšího odporu" jsem myslel celkově, protože se podle všeho jedná o systém, kde většinu práce odvádí jádro a fyzické paměti je dost (na to, co má dělat), takže považuji za zbytečné komplikovat si život 32-bitovým systémem a jeho omezeními, není-li to nutné.
6.5.2014 17:54 Pinon | skóre: 7
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Systém je 32bitový a vzhledem k tomu, že je HW také Alix (i686) tak 64bit nepřichází v úvahu. Jedná se o vlastní poměrně složitou úpravu slackware starou asi 6 let :-). Zkusím přes lilo jádru narvat větší hodnotu, asi nějakých 256Mbit a uvidíme co to udělá. Určitě pak dám vědět jak to dopadlo.

Díky moc za vaše rady.
6.5.2014 18:30 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
HW také Alix (i686)

Tak to se bohužel nedá nic dělat, jen doufat, že se vám nějak podaří upravit layout paměti a že to opravdu pomůže. :-(

Jedná se o vlastní poměrně složitou úpravu slackware starou asi 6 let

A to nasazujete jako firewall? Tak na to bych neměl odvahu.

Zkusím přes lilo jádru narvat větší hodnotu, asi nějakých 256Mbit a uvidíme co to udělá

Předpokládám, že ve skutečnosti myslíte 256 MB, ne 256 megabitů…

7.5.2014 11:01 Pinon | skóre: 7
Rozbalit Rozbalit vše Re: Málá hodnota VmallocTotal paměti
Neslouží to jako firewall, ale jako shaper, tedy omezování rychlostí podle ip adresy.
Předpokládám, že ve skutečnosti myslíte 256 MB, ne 256 megabitů…
Myslel jsem 256MB :-).

Včera večer jsem ještě zkusil sledovat dvě hodnoty a to
VmallocTotal:   114680 kB
VmallocUsed:     39184 kB
Při zpracování iptables příkazů se postupně navyšuje VmallocUsed, ale nepřesáhne to těch 40MB které tam nyní jsou zabrány, takže problém nakonec bude jinde než jsem si myslel. Co se týká nastavení Vmalloc MAX, tak jsem našel pěkný popis pro předání kernelu přes GRUB nebo LILO na adrese http://www.mythtv.org/wiki/Common_Problem:_vmalloc_too_small

Pro můj problém založím nové vlákno.

Moc díky za vaše rady a odpovědi.

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.