LINUX.ORG.RU
ФорумAdmin

Как почистить Buffers из /proc/meminfo?

 ,


0

1

Есть программа, которая читает/пишет на устройство /dev/disk/... Как только память заканчивается, она начинает жутко тормозить. Программа самописная, все операции записи через mmap, по завершению блока записи msync(ptr, MS_SYNC), и дескриптор файла открыт через O_SYNC. Cached не увеличивается, увеличивается только Buffers. Выполнение echo 3 > /proc/sys/vm/drop_caches ничего не меняет. Очищается Buffers моментально по закрытию процесса. Закрытие дескрипторов без закрытия процесса ничего не меняет. В этом Buffers не остается не сохраненных данных на диск. Какой командой из с++ или из командной строки можно заставить очиститься Buffers без закрытия процесса?

Ответ на: комментарий от zuzzas

На счет Buffers оказался не совсем точен - он обнуляется периодически. Но тормоза все равно появляются внезапно, очередная пачка расчетов, которые только считывают с диска, становится в 10-20 раз медленнее. И раз на 10 пачек чтения, происходит пачка записи, по завершению которой закрываются все дескрипторы. После пачки записи, пачки чтения сначала подтормаживают, затем ускоряются. Но в какой то момент без дополнительных записей или увеличения объема считывания, пачки считывания начинают тормозить. В момент тормозов:

$sudo slabtop -sc -o > info1

Active / Total Objects (% used)    : 340291 / 399509 (85,2%)
Active / Total Slabs (% used)      : 12505 / 12505 (100,0%)
Active / Total Caches (% used)     : 82 / 113 (72,6%)
Active / Total Size (% used)       : 75370,78K / 91027,24K (82,8%)
Minimum / Average / Maximum Object : 0,01K / 0,23K / 18,75K

 OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME
22120  21956  99%    0,57K    790       28     12640K radix_tree_node
 9660   3945  40%    1,05K    322       30     10304K ext4_inode_cache
40720  40234  98%    0,20K   2036       20      8144K vm_area_struct
39795  19043  47%    0,19K   1895       21      7580K dentry
12231  11160  91%    0,58K    453       27      7248K inode_cache
54873  50530  92%    0,10K   1407       39      5628K buffer_head
  745    682  91%    5,62K    149        5      4768K task_struct
14560  12737  87%    0,25K    910       16      3640K kmalloc-256
30906  30630  99%    0,12K    909       34      3636K kernfs_node_cache
 2464   2359  95%    1,00K    154       16      2464K kmalloc-1024
 3427   3038  88%    0,68K    149       23      2384K shmem_inode_cache
  531    434  81%    4,00K     69        8      2208K kmalloc-4096
14112  14085  99%    0,14K    504       28      2016K ext4_groupinfo_4k
30272  29083  96%    0,06K    473       64      1892K anon_vma_chain
  816    763  93%    2,00K     51       16      1632K kmalloc-2048
 2992   2588  86%    0,50K    187       16      1496K kmalloc-512
$cat /proc/meminfo > info2

MemTotal:       16113604 kB
MemFree:          164152 kB
MemAvailable:    3744196 kB
Buffers:         3531708 kB
Cached:           743444 kB
SwapCached:            0 kB
Active:         14604380 kB
Inactive:        1103240 kB
Active(anon):   11434080 kB
Inactive(anon):   464548 kB
Active(file):    3170300 kB
Inactive(file):   638692 kB
Unevictable:         224 kB
Mlocked:             224 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                52 kB
Writeback:             0 kB
AnonPages:      11432912 kB
Mapped:          3742532 kB
Shmem:            465940 kB
Slab:              90408 kB
SReclaimable:      45732 kB
SUnreclaim:        44676 kB
KernelStack:       10592 kB
PageTables:        75576 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     8056800 kB
Committed_AS:    8050064 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:   1959936 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      598292 kB
DirectMap2M:    15857664 kB

victor79
() автор топика
Ответ на: комментарий от victor79

Когда программа уже закрыта:

 Active / Total Objects (% used)    : 288296 / 359284 (80,2%)
 Active / Total Slabs (% used)      : 11464 / 11464 (100,0%)
 Active / Total Caches (% used)     : 82 / 113 (72,6%)
 Active / Total Size (% used)       : 64187,66K / 85880,23K (74,7%)
 Minimum / Average / Maximum Object : 0,01K / 0,24K / 18,75K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
 19852   8512  42%    0,57K    709       28     11344K radix_tree_node        
  9600   4245  44%    1,05K    320       30     10240K ext4_inode_cache       
 40820  40221  98%    0,20K   2041       20      8164K vm_area_struct         
 39753  21448  53%    0,19K   1893       21      7572K dentry                 
 12231  11200  91%    0,58K    453       27      7248K inode_cache            
   745    674  90%    5,62K    149        5      4768K task_struct            
 14864  12687  85%    0,25K    929       16      3716K kmalloc-256            
 30906  30720  99%    0,12K    909       34      3636K kernfs_node_cache      
  2464   2340  94%    1,00K    154       16      2464K kmalloc-1024           
  3427   3110  90%    0,68K    149       23      2384K shmem_inode_cache      
   539    438  81%    4,00K     70        8      2240K kmalloc-4096           
 14112  14085  99%    0,14K    504       28      2016K ext4_groupinfo_4k      
 30144  28901  95%    0,06K    471       64      1884K anon_vma_chain         
 16692   7306  43%    0,10K    428       39      1712K buffer_head            
   816    782  95%    2,00K     51       16      1632K kmalloc-2048           
  3008   2525  83%    0,50K    188       16      1504K kmalloc-512            

victor79
() автор топика
Ответ на: комментарий от victor79

Swap на компе не задействован, операционка на отдельном SSD диске. Программа выполняется на обычном магнитном диске.

victor79
() автор топика
Ответ на: комментарий от victor79

Когда программа уже закрыта:

Предыдущий пост, когда все закрыто, неверный, вот картина когда все закрыто:

 Active / Total Objects (% used)    : 337530 / 374824 (90,1%)
 Active / Total Slabs (% used)      : 12994 / 12994 (100,0%)
 Active / Total Caches (% used)     : 82 / 113 (72,6%)
 Active / Total Size (% used)       : 111806,86K / 124817,62K (89,6%)
 Minimum / Average / Maximum Object : 0,01K / 0,33K / 18,75K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
  4244   4244 100%    8,00K   1061        4     33952K kmalloc-8192           
 19208  12284  63%    0,57K    686       28     10976K radix_tree_node        
  9570   6219  64%    1,05K    319       30     10208K ext4_inode_cache       
 42860  42312  98%    0,20K   2143       20      8572K vm_area_struct         
 14256  12751  89%    0,58K    528       27      8448K inode_cache            
 39543  30341  76%    0,19K   1883       21      7532K dentry                 
   735    718  97%    5,62K    147        5      4704K task_struct            
 15568  14943  95%    0,25K    973       16      3892K kmalloc-256            
  5313   5188  97%    0,68K    231       23      3696K shmem_inode_cache      
 31246  31246 100%    0,12K    919       34      3676K kernfs_node_cache      
  3297   3297 100%    0,75K    157       21      2512K fuse_inode             
  2464   2327  94%    1,00K    154       16      2464K kmalloc-1024           
  4832   4691  97%    0,50K    302       16      2416K kmalloc-512            
   523    444  84%    4,00K     68        8      2176K kmalloc-4096           
 14112  14085  99%    0,14K    504       28      2016K ext4_groupinfo_4k      
 29952  28215  94%    0,06K    468       64      1872K anon_vma_chain         

victor79
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.