Mam wbudowany system z jądrem Linux 2.6.10 (wiem!) I zauważyłem, że gdy system pozostaje na dłużej, "buforowany" "użycie pamięci RAM - jak widać w/proc/meminfo - rośnie liniowo. Czasami dochodzi do 70% całkowitej pamięci RAM i system ulega awarii.Czyszczenie pamięci "cached" w/proc/meminfo bez drop_caches
Nie wiem, dlaczego to miejsce nie było automatycznie ponownie zgłaszane przez jądro w warunkach niskiej ilości pamięci. Myślałem, że pamięć "buforowana", choć używana, jest nadal uważana za "dostępną".
Aby co najmniej ręcznie odzyskać to miejsce, musiałbym zmodyfikować ustawienie drop_caches w/proc/sys/vm /. Jednak ta funkcja została wprowadzona tylko w jądrze 2.6.16.
Ponieważ duża część tego, co znajduje się w „pamięci podręcznej” jest buforuje stronę cache, plików i-węzłów, czy jest jakiś sposób, aby je odzyskać forefully bez drop_caches wyposażone? Próbowałem już sync
, ale to nie pomogło.
Mam dużo google o tym, ale nie mogłem znaleźć żadnych zasobów, które nie polegają w jakiś sposób na funkcji drop_caches.
EDIT:
Po poradę a few other threads, wpadłem test, który napisał do pokładowego rzutowej partycji co kilka sekund i widzę oba pola dentry
i size-64
iść w /proc/slabinfo
(w wysokości 1 os pętla skryptu bash). Jednak nie zauważyłem żadnego zwiększenia wykorzystania pamięci przez Cached
.
WIĘCEJ INFO:
muszę wspomnieć, że sam katalog główny jest w ramfs. Mam układ flash, z którego odczytujemy/piszemy, ale zbyt często. Wkleiłem meminfo i slabinfo zrobione kiedyś przed katastrofą. Zwróć uwagę, że pola aktywne i buforowane zwiększają się ponad całkowitą dostępną pamięć!
MemTotal: 256708 kB
MemFree: 4896 kB
Buffers: 0 kB
Cached: 181892 kB
SwapCached: 0 kB
Active: 178140 kB
Inactive: 46496 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 256708 kB
LowFree: 4896 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
Mapped: 56656 kB
Slab: 11252 kB
CommitLimit: 128352 kB
Committed_AS: 175668 kB
PageTables: 908 kB
VmallocTotal: 737280 kB
VmallocUsed: 113084 kB
VmallocChunk: 624100 kB
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <batchcount> <limit> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
rwsem_lock_cache 0 0 64 59 1 : tunables 120 60 0 : slabdata 0 0 0
rwsem_owner_cache 16 59 64 59 1 : tunables 120 60 0 : slabdata 1 1 0
rwsem_sap_cache 0 0 128 30 1 : tunables 120 60 0 : slabdata 0 0 0
pss_node_cache 0 0 32 113 1 : tunables 120 60 0 : slabdata 0 0 0
mts-sapinfo-cache 0 0 1152 7 2 : tunables 24 12 0 : slabdata 0 0 0
mts-sap-desc-cache 34 36 448 9 1 : tunables 54 27 0 : slabdata 4 4 0
mts-qentry-cache 5 59 64 59 1 : tunables 120 60 0 : slabdata 1 1 0
mts-rcpnt-cache 1 1 5568 1 2 : tunables 8 4 0 : slabdata 1 1 0
rpc_buffers 8 8 2048 2 1 : tunables 24 12 0 : slabdata 4 4 0
rpc_tasks 8 24 160 24 1 : tunables 120 60 0 : slabdata 1 1 0
rpc_inode_cache 0 0 416 9 1 : tunables 54 27 0 : slabdata 0 0 0
unix_sock 70 70 384 10 1 : tunables 54 27 0 : slabdata 7 7 0
tcp_tw_bucket 0 0 96 40 1 : tunables 120 60 0 : slabdata 0 0 0
tcp_bind_bucket 25 203 16 203 1 : tunables 120 60 0 : slabdata 1 1 0
tcp_open_request 2 59 64 59 1 : tunables 120 60 0 : slabdata 1 1 0
inet_peer_cache 4 59 64 59 1 : tunables 120 60 0 : slabdata 1 1 0
ip_fib_alias 23 203 16 203 1 : tunables 120 60 0 : slabdata 1 1 0
ip_fib_hash 23 113 32 113 1 : tunables 120 60 0 : slabdata 1 1 0
ip_dst_cache 34 45 256 15 1 : tunables 120 60 0 : slabdata 3 3 0
arp_cache 13 24 160 24 1 : tunables 120 60 0 : slabdata 1 1 0
raw_sock 8 8 480 8 1 : tunables 54 27 0 : slabdata 1 1 0
udp_sock 7 8 480 8 1 : tunables 54 27 0 : slabdata 1 1 0
tcp_sock 29 36 1024 4 1 : tunables 54 27 0 : slabdata 9 9 0
flow_cache 0 0 96 40 1 : tunables 120 60 0 : slabdata 0 0 0
cfq_ioc_pool 0 0 24 145 1 : tunables 120 60 0 : slabdata 0 0 0
cfq_pool 0 0 104 37 1 : tunables 120 60 0 : slabdata 0 0 0
crq_pool 0 0 52 72 1 : tunables 120 60 0 : slabdata 0 0 0
deadline_drq 0 0 48 78 1 : tunables 120 60 0 : slabdata 0 0 0
as_arq 4 63 60 63 1 : tunables 120 60 0 : slabdata 1 1 0
mqueue_inode_cache 1 8 480 8 1 : tunables 54 27 0 : slabdata 1 1 0
jffs2_inode_cache 24 145 24 145 1 : tunables 120 60 0 : slabdata 1 1 0
jffs2_node_frag 36493 36576 28 127 1 : tunables 120 60 0 : slabdata 288 288 0
jffs2_raw_node_ref 52018 52171 16 203 1 : tunables 120 60 0 : slabdata 257 257 0
jffs2_tmp_dnode 0 0 24 145 1 : tunables 120 60 0 : slabdata 0 0 0
jffs2_raw_inode 0 0 68 56 1 : tunables 120 60 0 : slabdata 0 0 0
jffs2_raw_dirent 0 0 40 92 1 : tunables 120 60 0 : slabdata 0 0 0
jffs2_full_dnode 36494 36540 16 203 1 : tunables 120 60 0 : slabdata 180 180 0
jffs2_i 13 24 328 12 1 : tunables 54 27 0 : slabdata 2 2 0
nfs_write_data 36 36 448 9 1 : tunables 54 27 0 : slabdata 4 4 0
nfs_read_data 32 36 448 9 1 : tunables 54 27 0 : slabdata 4 4 0
nfs_inode_cache 0 0 544 7 1 : tunables 54 27 0 : slabdata 0 0 0
nfs_page 0 0 64 59 1 : tunables 120 60 0 : slabdata 0 0 0
dnotify_cache 0 0 20 169 1 : tunables 120 60 0 : slabdata 0 0 0
kioctx 0 0 192 20 1 : tunables 120 60 0 : slabdata 0 0 0
kiocb 0 0 128 30 1 : tunables 120 60 0 : slabdata 0 0 0
fasync_cache 0 0 16 203 1 : tunables 120 60 0 : slabdata 0 0 0
shmem_inode_cache 169 170 384 10 1 : tunables 54 27 0 : slabdata 17 17 0
posix_timers_cache 0 0 100 39 1 : tunables 120 60 0 : slabdata 0 0 0
uid_cache 0 0 64 59 1 : tunables 120 60 0 : slabdata 0 0 0
blkdev_ioc 0 0 24 145 1 : tunables 120 60 0 : slabdata 0 0 0
blkdev_queue 25 30 368 10 1 : tunables 54 27 0 : slabdata 3 3 0
blkdev_requests 4 28 140 28 1 : tunables 120 60 0 : slabdata 1 1 0
biovec-(256) 256 256 3072 2 2 : tunables 24 12 0 : slabdata 128 128 0
biovec-128 256 260 1536 5 2 : tunables 24 12 0 : slabdata 52 52 0
biovec-64 256 260 768 5 1 : tunables 54 27 0 : slabdata 52 52 0
biovec-16 256 260 192 20 1 : tunables 120 60 0 : slabdata 13 13 0
biovec-4 256 295 64 59 1 : tunables 120 60 0 : slabdata 5 5 0
biovec-1 256 406 16 203 1 : tunables 120 60 0 : slabdata 2 2 0
bio 256 295 64 59 1 : tunables 120 60 0 : slabdata 5 5 0
file_lock_cache 65 80 96 40 1 : tunables 120 60 0 : slabdata 2 2 0
sock_inode_cache 121 121 352 11 1 : tunables 54 27 0 : slabdata 11 11 0
skbuff_head_cache 560 560 192 20 1 : tunables 120 60 0 : slabdata 28 28 0
sock 9 12 320 12 1 : tunables 54 27 0 : slabdata 1 1 0
proc_inode_cache 1196 1196 304 13 1 : tunables 54 27 0 : slabdata 92 92 0
sigqueue 26 26 148 26 1 : tunables 120 60 0 : slabdata 1 1 0
radix_tree_node 2030 2030 276 14 1 : tunables 54 27 0 : slabdata 145 145 0
bdev_cache 1 9 416 9 1 : tunables 54 27 0 : slabdata 1 1 0
mnt_cache 20 40 96 40 1 : tunables 120 60 0 : slabdata 1 1 0
inode_cache 2665 2665 288 13 1 : tunables 54 27 0 : slabdata 205 205 0
dentry_cache 4147 4147 136 29 1 : tunables 120 60 0 : slabdata 143 143 0
filp 1380 1440 160 24 1 : tunables 120 60 0 : slabdata 60 60 0
names_cache 4 4 4096 1 1 : tunables 24 12 0 : slabdata 4 4 0
idr_layer_cache 97 116 136 29 1 : tunables 120 60 0 : slabdata 4 4 0
buffer_head 0 0 48 78 1 : tunables 120 60 0 : slabdata 0 0 0
mm_struct 44 49 544 7 1 : tunables 54 27 0 : slabdata 7 7 0
vm_area_struct 3452 3680 84 46 1 : tunables 120 60 0 : slabdata 80 80 0
fs_cache 45 113 32 113 1 : tunables 120 60 0 : slabdata 1 1 0
files_cache 42 45 416 9 1 : tunables 54 27 0 : slabdata 5 5 0
signal_cache 57 60 256 15 1 : tunables 120 60 0 : slabdata 4 4 0
sighand_cache 55 60 1312 3 1 : tunables 24 12 0 : slabdata 20 20 0
task_struct 96 100 960 4 1 : tunables 54 27 0 : slabdata 25 25 0
anon_vma 1273 1356 8 339 1 : tunables 120 60 0 : slabdata 4 4 0
size-131072(DMA) 0 0 131072 1 32 : tunables 8 4 0 : slabdata 0 0 0
size-131072 1 1 131072 1 32 : tunables 8 4 0 : slabdata 1 1 0
size-65536(DMA) 0 0 65536 1 16 : tunables 8 4 0 : slabdata 0 0 0
size-65536 0 0 65536 1 16 : tunables 8 4 0 : slabdata 0 0 0
size-32768(DMA) 0 0 32768 1 8 : tunables 8 4 0 : slabdata 0 0 0
size-32768 1 1 32768 1 8 : tunables 8 4 0 : slabdata 1 1 0
size-16384(DMA) 0 0 16384 1 4 : tunables 8 4 0 : slabdata 0 0 0
size-16384 8 8 16384 1 4 : tunables 8 4 0 : slabdata 8 8 0
size-8192(DMA) 0 0 8192 1 2 : tunables 8 4 0 : slabdata 0 0 0
size-8192 3 3 8192 1 2 : tunables 8 4 0 : slabdata 3 3 0
size-4096(DMA) 0 0 4096 1 1 : tunables 24 12 0 : slabdata 0 0 0
size-4096 278 278 4096 1 1 : tunables 24 12 0 : slabdata 278 278 0
size-2048(DMA) 0 0 2048 2 1 : tunables 24 12 0 : slabdata 0 0 0
size-2048 292 292 2048 2 1 : tunables 24 12 0 : slabdata 146 146 0
size-1024(DMA) 0 0 1024 4 1 : tunables 54 27 0 : slabdata 0 0 0
size-1024 60 60 1024 4 1 : tunables 54 27 0 : slabdata 15 15 0
size-512(DMA) 0 0 512 8 1 : tunables 54 27 0 : slabdata 0 0 0
size-512 216 216 512 8 1 : tunables 54 27 0 : slabdata 27 27 0
size-256(DMA) 0 0 256 15 1 : tunables 120 60 0 : slabdata 0 0 0
size-256 76 90 256 15 1 : tunables 120 60 0 : slabdata 6 6 0
size-192(DMA) 0 0 192 20 1 : tunables 120 60 0 : slabdata 0 0 0
size-192 139 140 192 20 1 : tunables 120 60 0 : slabdata 7 7 0
size-128(DMA) 0 0 128 30 1 : tunables 120 60 0 : slabdata 0 0 0
size-128 857 870 128 30 1 : tunables 120 60 0 : slabdata 29 29 0
size-96(DMA) 0 0 96 40 1 : tunables 120 60 0 : slabdata 0 0 0
size-96 1049 1080 96 40 1 : tunables 120 60 0 : slabdata 27 27 0
size-64(DMA) 0 0 64 59 1 : tunables 120 60 0 : slabdata 0 0 0
size-64 4425 4425 64 59 1 : tunables 120 60 0 : slabdata 75 75 0
size-32(DMA) 0 0 32 113 1 : tunables 120 60 0 : slabdata 0 0 0
size-32 4633 4633 32 113 1 : tunables 120 60 0 : slabdata 41 41 0
kmem_cache 120 120 128 30 1 : tunables 120 60 0 : slabdata 4 4 0
Czy jesteś pewien, że system ulega awarii z powodu niskiego poziomu pamięci? –
Podejrzewam, że tak, ostatnie ostrzeżenie zostało podniesione, gdy pozostało tylko 4 MB wolnej pamięci – Ram
Nie uważam, że aktywne + buforowane jest znaczącym obliczeniem. https://access.redhat.com/solutions/406773 mówi, że "Aktywny: pamięć używana od niedawna i zwykle niezmieniana ani regenerowana". Pamięć buforowana prawdopodobnie liczy się jako aktywna. Nie ma powodu, aby rozpoczynać eksykowanie pamięci podręcznych, podczas gdy w ogóle jest wolna pamięć i myślę, że normalne jest korzystanie z całej używanej pamięci, o ile nie wyczerpuje się, i musisz udowodnić, że jesteś. Czy widzisz procesy zabite z powodu OOM? –