bol-van / zapret

DPI bypass multi platform
7.81k stars 602 forks source link

NFQWS на Keenetic течет память в TCP slab #311

Open PutinVladimir opened 2 months ago

PutinVladimir commented 2 months ago

До запуска:

MemTotal:         501116 kB
MemFree:          228712 kB
MemAvailable:     337812 kB
Buffers:           71000 kB
Cached:            64500 kB
SwapCached:            0 kB
Active:           122344 kB
Inactive:          39488 kB
Active(anon):      26488 kB
Inactive(anon):      100 kB
Active(file):      95856 kB
Inactive(file):    39388 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        524284 kB
SwapFree:         524284 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         26308 kB
Mapped:            28436 kB
Shmem:               260 kB
Slab:              49588 kB
SReclaimable:      15296 kB
SUnreclaim:        34292 kB
KernelStack:        2624 kB
PageTables:          884 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      774840 kB
Committed_AS:      69564 kB
VmallocTotal:   263061440 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB

через ~12 часов после запуска

MemTotal:         501116 kB
MemFree:          187168 kB
MemAvailable:     307272 kB
Buffers:           72756 kB
Cached:            73668 kB
SwapCached:            0 kB
Active:           137968 kB
Inactive:          36672 kB
Active(anon):      28380 kB
Inactive(anon):      104 kB
Active(file):     109588 kB
Inactive(file):    36568 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        524284 kB
SwapFree:         524284 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         28184 kB
Mapped:            26280 kB
Shmem:               272 kB
Slab:              70216 kB
SReclaimable:      15476 kB
SUnreclaim:        54740 kB
KernelStack:        2592 kB
PageTables:          892 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      774840 kB
Committed_AS:      70060 kB
VmallocTotal:   263061440 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB

За ночь в простое утекло 20mb оперативки...

bol-van commented 2 months ago

Что толку постить общие данные по системе ? Я отвечаю только за часть nfqws. Если течет ядро или процессы кинетика - это их проблемы

установите procps-ng-ps и смотрите какой процесс растет все время по RSS или VSZ ps -aux --sort -rss

на нескольких системах openwrt проверил nfqws. там VSZ<0.5 мб, RSS и того меньше

PutinVladimir commented 2 months ago

Сам nfqws не течет как и у вас потребленеи меньше пол мега байта. Понятно что течет ядро, но течет из-за nfqws он не закрывает сокеты или еще что то такое. Как понять детали и что с этим делать вопрос...

bol-van commented 2 months ago

Думаю если бы он не закрывал сокеты, то это бы воспроизводилось на других linux однако жалобы только с кинетика

сокеты можно посмотреть через lsof (не бизибокс) nfqws в самом начале создает raw и raw6 сокеты для отсылки пакетов в процессе работы они не закрываются и используются, новых не создается

обычная картина по nfqws

nfqws     21871                    daemon  cwd       DIR                8,2        4096          2 /
nfqws     21871                    daemon  rtd       DIR                8,2        4096          2 /
nfqws     21871                    daemon  txt       REG                8,3      117456   14423821 /home/opt/zapret/binaries/x86_64/nfqws
nfqws     21871                    daemon    0r      CHR                1,3         0t0         30 /dev/null
nfqws     21871                    daemon    1w      CHR                1,3         0t0         30 /dev/null
nfqws     21871                    daemon    2w      CHR                1,3         0t0         30 /dev/null
nfqws     21871                    daemon    3u  netlink                            0t0   42729357 NETFILTER
nfqws     21871                    daemon    4u      raw                            0t0   42729358 00000000:00FF->00000000:0000 st=07
nfqws     21871                    daemon    5u     raw6                            0t0   42729359 00000000000000000000000000000000:00FF->00000000000000000000000000000000:0000 st=07

nfqws вообще довольно статичен. из динамических мемори алокаций там в основном только conntrack pool, reasm buffer, delayed packet queue, машина состояний autohostlist все это просто память, а не обьекты ядра. проверяли в valgrind. утечек не нашли

Anonym-tsk commented 2 months ago

https://forum.keenetic.com/topic/18656-%D1%83%D1%82%D0%B5%D1%87%D0%BA%D0%B0-%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8-kn-1811-417/

Баг в ядре. Исправление будет в прошивке 4.2 beta 3

bol-van commented 2 months ago

Это баг в оригинальном ядре, давно исправленный, но в кинетике старая версия без патча ?

Anonym-tsk commented 2 months ago

в кинетике старая версия без патча ?

Все так, в кинетике ядро 4.9. Патч затянули, проверим как обновление выйдет.

PutinVladimir commented 1 month ago

Исправлено в прошивке кинетика

Anonym-tsk commented 1 month ago

Нет, не исправлено. Продолжаем обсуждение с техподдержкой

nightrider77 commented 1 month ago

Нет, не исправлено. Продолжаем обсуждение с техподдержкой

Накатил beta 3, пару дней стабильно 127 / 512 МБ. Только вот после обновления, youtube после открытия видео отыгрывает тот момент, что он забуферезировал, и всё, зависает. Обновляешь страницу и далее уже всё идёт без проблем. И всё равно строчка в логе Opkg::Manager: /opt/etc/ndm/netfilter.d/000-zapret.sh: iptables: No chain/target/match by that name. напрягает.