เหตุใดวัตถุพื้นจึงไม่เรียกคืนโดยอัตโนมัติ


17

อัปเดต : ฉันไม่พบปัญหานี้ใน 4.9 อีกต่อไป * ไม่แน่ใจว่าเมื่อใดที่ได้รับการแก้ไข

ทุกวันหลังจากการสำรองข้อมูลเต็มระบบโปรแกรมต่าง ๆ ล้มเหลวพร้อมข้อผิดพลาดในการอ่านจนกว่าฉันecho 2 > /proc/sys/vm/drop_cachesจะรันเพื่อเรียกคืนออบเจ็กต์แผ่นพื้นที่เรียกคืนได้ฟรี

ตัวอย่างเช่นนี่คือผลลัพธ์ของsudo apt-get updateหลังจากการสำรองข้อมูล

$ sudo apt-get update
Hit http://ftp.ca.debian.org unstable InRelease
Hit http://ftp.ca.debian.org experimental InRelease                                                            
Ign http://dl.google.com stable InRelease                                                                      
Get:1 http://ftp.ca.debian.org unstable/contrib amd64 Packages/DiffIndex [7,819 B]               
Hit http://dl.google.com stable Release.gpg                                     
Hit http://ppa.launchpad.net wily InRelease                               
Get:2 http://ftp.ca.debian.org unstable/non-free amd64 Packages/DiffIndex [6,577 B]            
Hit http://dl.google.com stable Release                                         
Hit http://ppa.launchpad.net wily InRelease                                                      
Get:3 http://ftp.ca.debian.org unstable/main amd64 Packages/DiffIndex [7,876 B]
Get:4 http://ftp.ca.debian.org unstable/contrib i386 Packages/DiffIndex [7,819 B]
Get:5 http://ppa.launchpad.net wily/main amd64 Packages [4,559 B]
Get:6 http://ftp.ca.debian.org unstable/non-free i386 Packages/DiffIndex [6,715 B]           
Get:7 http://ppa.launchpad.net wily/main i386 Packages [4,608 B]                                       
Get:8 http://ftp.ca.debian.org unstable/main i386 Packages/DiffIndex [7,876 B]                                 
Hit http://dl.google.com stable/main amd64 Packages                                             
Get:9 http://ftp.ca.debian.org unstable/contrib Translation-en/DiffIndex [2,161 B]             
Get:10 http://ppa.launchpad.net wily/main Translation-en [1,663 B]
Hit http://dl.google.com stable/main i386 Packages
E: Read error - read (5: Input/output error)    

ข้อผิดพลาดตัวอย่างอื่นขณะนี้มี gulp / node.js

$ gulp watch
fs.js:651
  var r = binding.read(fd, buffer, offset, length, position);
                  ^

Error: EIO: i/o error, read
    at Error (native)
    at Object.fs.readSync (fs.js:651:19)
    at Object.fs.readFileSync (fs.js:467:24)
    at Object.Module._extensions..js (module.js:431:20)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/usr/local/lib/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/lib/findup-sync.js:15:12)
    at Module._compile (module.js:425:26)

โปรแกรมอื่น ๆ ล้มเหลวด้วยข้อผิดพลาดในการอ่านเช่นกันไม่ใช่เพียงแค่ apt-get และ gulp / node.js

slabtop เอาท์พุท:

$ sudo slabtop -o
 Active / Total Objects (% used)    : 7244650 / 7322302 (98.9%)
 Active / Total Slabs (% used)      : 882626 / 882697 (100.0%)
 Active / Total Caches (% used)     : 78 / 122 (63.9%)
 Active / Total Size (% used)       : 3423174.16K / 3434416.86K (99.7%)
 Minimum / Average / Maximum Object : 0.02K / 0.47K / 4096.00K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
2419584 2418888  99%    0.97K 604896        4   2419584K btrfs_inode            
2249163 2249125  99%    0.19K 107103       21    428412K dentry                 
1271127 1270067  99%    0.30K  97779       13    391116K btrfs_delayed_node     
306243 299649  97%    0.06K   4861       63     19444K kmalloc-64             
241556 230494  95%    0.27K  17254       14     69016K btrfs_extent_buffer    
215068 212777  98%    0.14K   7681       28     30724K btrfs_path             
186102 185989  99%    0.56K  26586        7    106344K radix_tree_node        
174650 144422  82%    0.08K   3493       50     13972K btrfs_extent_state     
 37170  34869  93%    0.06K    590       63      2360K btrfs_free_space       
 37149  33473  90%    0.19K   1769       21      7076K kmalloc-192            
 32891  32382  98%    0.12K   1061       31      4244K kmalloc-96             
 26536  19327  72%    0.03K    214      124       856K kmalloc-32             
 24123  24015  99%    0.12K    731       33      2924K kernfs_node_cache      
 19656  19631  99%    0.07K    351       56      1404K Acpi-ParseExt          
 13728  11523  83%    0.25K    858       16      3432K kmalloc-256            
 11648  10783  92%    0.55K   1664        7      6656K inode_cache            
 11160   7283  65%    0.12K    360       31      1440K kmalloc-node           
 10696   9398  87%    0.07K    191       56       764K anon_vma               
  7059   6714  95%    0.10K    181       39       724K blkdev_ioc             
  3735   3615  96%    0.05K     45       83       180K ftrace_event_field     
  3696   3574  96%    0.50K    462        8      1848K kmalloc-512            
  3018   2871  95%    0.60K    503        6      2012K proc_inode_cache       
  1584   1503  94%    0.04K     16       99        64K Acpi-Namespace         
  1464   1418  96%    0.63K    244        6       976K shmem_inode_cache      
  1426   1348  94%    0.09K     31       46       124K trace_event_file       
  1400   1382  98%    1.00K    350        4      1400K kmalloc-1024           
  1311   1248  95%    4.00K   1311        1      5244K kmalloc-4096           
  1074    985  91%    0.62K    179        6       716K sock_inode_cache       
   852    806  94%    0.88K    213        4       852K RAW                    
   726    718  98%    2.94K    363        2      2904K task_struct            
   612    608  99%    2.00K    306        2      1224K kmalloc-2048           
   462    447  96%    2.05K    154        3      1232K idr_layer_cache        
   462    210  45%    0.18K     21       22        84K btrfs_trans_handle     
   429    157  36%    0.10K     11       39        44K buffer_head            
   384    181  47%    0.31K     32       12       128K bio-1                  
   355    217  61%    0.05K      5       71        20K file_lock_ctx          
   350    307  87%    1.12K     50        7       400K signal_cache           
   327    307  93%    2.06K    109        3       872K sighand_cache          
   289    211  73%    0.23K     17       17        68K cfq_queue              
   280    156  55%    0.38K     28       10       112K mnt_cache              

เอาท์พุทฟรี:

$ sudo free -h
              total        used        free      shared  buff/cache   available
Mem:            15G        2.3G        292M         28M         13G         13G
Swap:          7.5G        4.9M        7.4G

หลังจากใช้งานecho 2 > /proc/sys/vm/drop_cachesข้อผิดพลาดจะไม่ปรากฏขึ้น apt-get และโปรแกรมอื่น ๆ ทำงานได้ดี

slabtop เอาท์พุท:

$ sudo slabtop -o
 Active / Total Objects (% used)    : 586239 / 777567 (75.4%)
 Active / Total Slabs (% used)      : 57059 / 57123 (99.9%)
 Active / Total Caches (% used)     : 79 / 122 (64.8%)
 Active / Total Size (% used)       : 180630.05K / 229256.91K (78.8%)
 Minimum / Average / Maximum Object : 0.02K / 0.29K / 4096.00K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
241556 230586  95%    0.27K  17254       14     69016K btrfs_extent_buffer    
146251 100390  68%    0.56K  20893        7     83572K radix_tree_node        
 50967  26035  51%    0.06K    809       63      3236K kmalloc-64             
 37170  34866  93%    0.06K    590       63      2360K btrfs_free_space       
 37149  33440  90%    0.19K   1769       21      7076K kmalloc-192            
 37016   7054  19%    0.14K   1322       28      5288K btrfs_path             
 35889  13681  38%    0.19K   1709       21      6836K dentry                 
 27700   1805   6%    0.08K    554       50      2216K btrfs_extent_state     
 26412  19384  73%    0.03K    213      124       852K kmalloc-32             
 24123  24067  99%    0.12K    731       33      2924K kernfs_node_cache      
 19656  19637  99%    0.07K    351       56      1404K Acpi-ParseExt          
 13712  11542  84%    0.25K    857       16      3428K kmalloc-256            
 12152   8791  72%    0.97K   3038        4     12152K btrfs_inode            
 10696   9414  88%    0.07K    191       56       764K anon_vma               
  9632   8948  92%    0.55K   1376        7      5504K inode_cache            
  8742   4845  55%    0.12K    282       31      1128K kmalloc-node           
  7059   6794  96%    0.10K    181       39       724K blkdev_ioc             
  4867   2606  53%    0.12K    157       31       628K kmalloc-96             
  3735   3710  99%    0.05K     45       83       180K ftrace_event_field     
  3688   3525  95%    0.50K    461        8      1844K kmalloc-512            
  1794    498  27%    0.30K    138       13       552K btrfs_delayed_node     
  1584   1521  96%    0.04K     16       99        64K Acpi-Namespace         
  1464   1418  96%    0.63K    244        6       976K shmem_inode_cache      
  1426   1348  94%    0.09K     31       46       124K trace_event_file       
  1420   1357  95%    1.00K    355        4      1420K kmalloc-1024           
  1310   1252  95%    4.00K   1310        1      5240K kmalloc-4096           
  1074   1016  94%    0.62K    179        6       716K sock_inode_cache       
   852    807  94%    0.88K    213        4       852K RAW                    
   726    713  98%    2.94K    363        2      2904K task_struct            
   648    254  39%    0.60K    108        6       432K proc_inode_cache       
   636    635  99%    2.00K    318        2      1272K kmalloc-2048           
   506    240  47%    0.18K     23       22        92K btrfs_trans_handle     
   468    190  40%    0.10K     12       39        48K buffer_head            
   462    447  96%    2.05K    154        3      1232K idr_layer_cache        
   408    250  61%    0.31K     34       12       136K bio-1                  
   355    161  45%    0.05K      5       71        20K file_lock_ctx          
   350    307  87%    1.12K     50        7       400K signal_cache           
   327    307  93%    2.06K    109        3       872K sighand_cache          
   300    286  95%    0.38K     30       10       120K mnt_cache              
   297     85  28%    0.04K      3       99        12K btrfs_delayed_extent_op

เอาท์พุทฟรี:

$ sudo free -h
              total        used        free      shared  buff/cache   available
Mem:            15G        2.3G        6.1G         28M        7.3G         13G
Swap:          7.5G        4.8M        7.4G

ฉันใช้ Debian Sid บน btrfs แต่ฉันมีปัญหาเดียวกันกับ ext4 ดังนั้นฉันไม่คิดว่ามันเป็นปัญหาเฉพาะของระบบไฟล์

$ uname -v
#1 SMP Debian 4.2.6-1 (2015-11-10)

ฉันพยายามตั้ง vfs_cache_pressure เป็นค่าสูง

vm.vfs_cache_pressure=[ 100 | 1000 | 100000 ]

ฉันได้รับข้อผิดพลาดในการอ่านน้อยที่ 100,000 แต่การใช้ CPU เพิ่มขึ้นและการตอบสนองของระบบแย่มากดังนั้นฉันจึงมองหาโซลูชันอื่น

ฉันสามารถติดecho 2 > /proc/sys/vm/drop_cachesงาน cron แต่นั่นไม่ได้แก้ไขปัญหามันเป็นเพียงการแก้ปัญหา

นี่คือdmesg


คิดเหมือนกันที่นี่ การทำงานใน Solaris ก่อนหน้านี้ฉันเพิ่งรับแคชที่จัดสรรไว้ก่อนหน้านี้จะไม่ถูกส่งกลับไปยังหน่วยความจำว่างเพื่อเพิ่มประสิทธิภาพ / เร่งความเร็วการโทรจัดสรรหน่วยความจำ อย่างไรก็ตามในขณะที่เหมาะสมในเครื่องจักรทางกายภาพมันไม่สมเหตุสมผลอีกต่อไปในฟาร์ม VM
Rui F Ribeiro

5
นั่นฟังดูเหมือนแมลง วัตถุแผ่นพื้นอยู่พักหนึ่ง - นั่นคือจุดแคช - แต่ถ้ามีบางสิ่งที่ต้องการทรัพยากรก็ควรจะเรียกคืนสิ่งเหล่านั้น
Gilles 'หยุดความชั่วร้าย'

มีข้อผิดพลาด / ข้อความผิดพลาดใน dmesg, ไฟล์บันทึกข้อความ?
VenkatC

ไม่มีข้อผิดพลาดที่ผิดปกติก่อนการสำรองข้อมูล เพิ่ม Pastebin ไปยัง dmesg ของฉัน
Richard Ayotte

1
schmokes ศักดิ์สิทธิ์ฉันเพิ่งวิ่งเข้ามาในวันนี้ด้วยnpm run watchการดำเนินการติดตามล้มเหลวด้วยข้อผิดพลาดการอ่านที่ไม่ใช่คำอธิบาย ฉันไม่เคยคิดถึงเรื่องนี้ด้วยตัวเอง drop_cachesเรียกคืนการดำเนินการทันที แต่เกิดอะไรขึ้นที่นี่? 4.4.4ฉันเคอร์เนล
lkraav

คำตอบ:


2

kernel/mm/slab.cมีพวงของแพทช์ (jan, feb 2017) ที่ผ่านมาที่อยู่เหนือสิ่งอื่นใดการทำลายแคชช้า ในบางกรณีการดำเนินการทำลายแคชสามารถทำงานได้หลายชั่วโมง การดำเนินการเองก็มีประสิทธิภาพสูง

ที่กล่าวมานั้นไม่ใช่เรื่องผิดที่จะเห็นตัวเลขสูงหากคุณมีกิจกรรม I / O ของดิสก์จำนวนมาก แม้ว่าจำนวนของคุณอาจจะอยู่ในระดับสูงและอาจได้รับความเดือดร้อนจากหนึ่งในข้อผิดพลาดที่เกี่ยวข้องกับการทำลายช้า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.