ලිනක්ස් පද්ධතියක බෆර සහ හැඹිලිය හිස් කරන්නේ කෙසේද?


333

යම් මිණුම් සලකුණු කිරීමේ කාර්යයක් කිරීමට පෙර, ලිනක්ස් කර්නලය එහි බෆර සහ හැඹිලිය සඳහා පරිභෝජනය කරන මතකය (RAM) නිදහස් කරන්නේ කෙසේද?


මිණුම් සලකුණු කිරීම සඳහා මෙය බොහෝ දුරට ප්‍රයෝජනවත් බව සලකන්න. බෆර සහ හැඹිලිය හිස් කිරීම කාර්ය සාධනය අඩු කරයි ! බෆර් සහ හැඹිලිය නිදහස් කිරීම ධනාත්මක දෙයක් යැයි ඔබ සිතූ නිසා ඔබ මෙහි සිටී නම්, ගොස් ලිනක්ස් මගේ RAM කෑ බව කියවන්න! . කෙටිකතාව: නිදහස් මතකය යනු භාවිතයට නොගත් මතකය යනු අපතේ ගිය මතකයයි.


1
විවෘත ඩුප් ප්‍රශ්නය සහ ස්වයං පිළිතුරු දීමට ඇති උනන්දුව කුමක්ද? unix.stackexchange.com/questions/58553/… & unix.stackexchange.com/questions/17936/…
අහිංසක ලෝකය

1
@ අහිංසක-ලෝකය - මා සොයන විට මේවා කවදාවත් දැක නැත, එබැවින් එය මෙම වෙබ් අඩවියේ දැනුම පදනම් කරගෙන ඇති අතර එය පුරවා ගැනීමට උත්සාහ කරමින් සිටියේය.
slm

2
@ අහිංසක-ලෝකය - එම Q 2 දෙස බැලීමේදී මෙම ප්‍රශ්නෝත්තර සඳහා තවමත් ඉඩ ඇති බව මම සිතමි. මෙය වෙබ් අඩවියේ කැනොනිකල් ප්‍රශ්නෝත්තරයක් ලෙස ක්‍රියා කරයි. ඒවා ආමන්ත්‍රණය කරන දෙයින් තරමක් නිශ්චිත ය. මීට අමතරව, මෙය බෆර සහ හැඹිලිය විශ්ලේෂණය කිරීම සහ සුඩෝ භාවිතයෙන් පරාමිතීන් සකස් කරන්නේ කෙසේද යන්න පිළිබඳ තොරතුරු පෙන්වයි. අනෙක් ප්‍රශ්න දෙකෙන් එකක්වත් මේ කිසිවක් ආමන්ත්‍රණය නොකරයි.
slm

කරුණාකර මෙම ලිපිය කියවන්න linuxatemyram.com ඔබ අවදානම තේරුම් ගන්නේ නම් ඔබට නොමිලේ && සමමුහුර්ත && echo 3> / proc / sys / vm / drop_caches && free

Answers:


520

බෆර් හැඹිලිය හිස් කිරීම

ඔබට එය හිස් කිරීමට අවශ්‍ය නම් ඔබට මෙම විධාන දාමය භාවිතා කළ හැකිය.

# free && sync && echo 3 > /proc/sys/vm/drop_caches && free

             total       used       free     shared    buffers     cached
Mem:       1018916     980832      38084          0      46924     355764
-/+ buffers/cache:     578144     440772
Swap:      2064376        128    2064248
             total       used       free     shared    buffers     cached
Mem:       1018916     685008     333908          0        224     108252
-/+ buffers/cache:     576532     442384
Swap:      2064376        128    2064248

ඉහත විධානයට සංඛ්‍යාත්මක තර්කය වෙනස් කිරීමෙන් හැඹිලි අයිතමවල විවිධ අංග අතහැර දැමීමට ඔබට ලිනක්ස් කර්නලයට සං signal ා කළ හැකිය.

  • පිටු හැඹිලිය නිදහස් කිරීමට:

    # echo 1 > /proc/sys/vm/drop_caches
    
  • දන්ත හා ඉනෝඩ නිදහස් කිරීමට:

    # echo 2 > /proc/sys/vm/drop_caches
    
  • පිටු කෑෂ්, දන්ත වෛද්‍ය සහ ඉනෝඩ නිදහස් කිරීමට:

    # echo 3 > /proc/sys/vm/drop_caches
    

ඉහත දැක්වෙන්නේ මූල ලෙස ධාවනය කිරීමට ය. ඔබ ඒවා භාවිතයෙන් ඒවා කිරීමට උත්සාහ කරන්නේ sudoනම් ඔබට වාක්‍ය ඛණ්ඩය තරමක් වෙනස් කිරීමට අවශ්‍ය වනු ඇත:

$ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'

සටහන: ඔබ ඉහත විධානයෙහි ඊට වඩා විචිත්‍රවත් අනුවාදයක් තිබේ නම්:

$ echo "echo 1 > /proc/sys/vm/drop_caches" | sudo sh

සින්ටැක්ස් වල වෙනස ඇයි? මෙම /bin/echoනිසා වැඩසටහන, root ලෙස ධාවනය වන sudoනමුත්, මූල පමණක් ගොනු කිරීමට සුප්රසිද්ධ echo විධානය නිමවුම් නැවත යොමුකිරීම තියෙන්නේ බව ෂෙල් තවමත් ඔබ ධාවනය වෙයි. ඔබගේ වර්තමාන කවචය ආරම්භ වීමට පෙර නැවත හරවා යැවීම සිදු sudoකරයි.

බෆරයේ සහ හැඹිලියේ ඇති දේ දැකීම

ඔබ linux-ftoolsබෆරයේ සහ හැඹිලියේ අන්තර්ගතය විශ්ලේෂණය කිරීමට කැමති දැයි බලන්න . විශේෂයෙන් ඔබ දැනට හැඹිලිගත කර ඇති ගොනු මොනවාදැයි බැලීමට කැමති නම්.

ෆින්කෝර්

මෙම මෙවලම සමඟ ඔබට ලබා දෙන නාමාවලියක් තුළ ගබඩා කර ඇති ගොනු මොනවාදැයි දැක ගත හැකිය.

fincore [options] files...

  --pages=false      Do not print pages
  --summarize        When comparing multiple files, print a summary report
  --only-cached      Only print stats for files that are actually in cache.

උදාහරණයක් ලෙස , /var/lib/mysql/blogindex:

root@xxxxxx:/var/lib/mysql/blogindex# fincore --pages=false --summarize --only-cached * 
stats for CLUSTER_LOG_2010_05_21.MYI: file size=93840384 , total pages=22910 , cached pages=1 , cached size=4096, cached perc=0.004365 
stats for CLUSTER_LOG_2010_05_22.MYI: file size=417792 , total pages=102 , cached pages=1 , cached size=4096, cached perc=0.980392 
stats for CLUSTER_LOG_2010_05_23.MYI: file size=826368 , total pages=201 , cached pages=1 , cached size=4096, cached perc=0.497512 
stats for CLUSTER_LOG_2010_05_24.MYI: file size=192512 , total pages=47 , cached pages=1 , cached size=4096, cached perc=2.127660 
stats for CLUSTER_LOG_2010_06_03.MYI: file size=345088 , total pages=84 , cached pages=43 , cached size=176128, cached perc=51.190476 
stats for CLUSTER_LOG_2010_06_04.MYD: file size=1478552 , total pages=360 , cached pages=97 , cached size=397312, cached perc=26.944444 
stats for CLUSTER_LOG_2010_06_04.MYI: file size=205824 , total pages=50 , cached pages=29 , cached size=118784, cached perc=58.000000 
stats for COMMENT_CONTENT_2010_06_03.MYI: file size=100051968 , total pages=24426 , cached pages=10253 , cached size=41996288, cached perc=41.975764 
stats for COMMENT_CONTENT_2010_06_04.MYD: file size=716369644 , total pages=174894 , cached pages=79821 , cached size=326946816, cached perc=45.639645 
stats for COMMENT_CONTENT_2010_06_04.MYI: file size=56832000 , total pages=13875 , cached pages=5365 , cached size=21975040, cached perc=38.666667 
stats for FEED_CONTENT_2010_06_03.MYI: file size=1001518080 , total pages=244511 , cached pages=98975 , cached size=405401600, cached perc=40.478751 
stats for FEED_CONTENT_2010_06_04.MYD: file size=9206385684 , total pages=2247652 , cached pages=1018661 , cached size=4172435456, cached perc=45.321117 
stats for FEED_CONTENT_2010_06_04.MYI: file size=638005248 , total pages=155763 , cached pages=52912 , cached size=216727552, cached perc=33.969556 
stats for FEED_CONTENT_2010_06_04.frm: file size=9840 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000 
stats for PERMALINK_CONTENT_2010_06_03.MYI: file size=1035290624 , total pages=252756 , cached pages=108563 , cached size=444674048, cached perc=42.951700 
stats for PERMALINK_CONTENT_2010_06_04.MYD: file size=55619712720 , total pages=13579031 , cached pages=6590322 , cached size=26993958912, cached perc=48.533080 
stats for PERMALINK_CONTENT_2010_06_04.MYI: file size=659397632 , total pages=160985 , cached pages=54304 , cached size=222429184, cached perc=33.732335 
stats for PERMALINK_CONTENT_2010_06_04.frm: file size=10156 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000 
---
total cached size: 32847278080

ඉහත ප්‍රතිදානය සමඟ දැනට * .MYD, * .MYI, සහ * .frm ගොනු කිහිපයක් හැඹිලිගත කර ඇති බව ඔබට පෙනේ.

Swap කරන්න

ඔබේ හුවමාරුව ඉවත් කිරීමට ඔබට අවශ්‍ය නම් ඔබට පහත දැක්වෙන විධානයන් භාවිතා කළ හැකිය.

$ free
             total       used       free     shared    buffers     cached
Mem:       7987492    7298164     689328          0      30416     457936
-/+ buffers/cache:    6809812    1177680
Swap:      5963772     609452    5354320

Swap අක්‍රීය කිරීමට මෙම විධානය භාවිතා කරන්න:

$ swapoff -a

එය දැන් හිස් බව ඔබට තහවුරු කළ හැකිය:

$ free
             total       used       free     shared    buffers     cached
Mem:       7987492    7777912     209580          0      39332     489864
-/+ buffers/cache:    7248716     738776
Swap:            0          0          0

එය නැවත සක්‍රීය කිරීම සඳහා:

$ swapon -a

දැන් මෙය නැවත තහවුරු කරන්න free:

$ free
             total       used       free     shared    buffers     cached
Mem:       7987492    7785572     201920          0      41556     491508
-/+ buffers/cache:    7252508     734984
Swap:      5963772          0    5963772

13
හැඹිලි හැලෙන හැටි මම දැන සිටියත්, වසර ගණනාවකට පසු ලිනක්ස්-ෆූටූල්ස් ගැන අසා නැත. ඔබ ඇත්තටම ගුරු. බෙදාගැනීම ගැන ස්තූතියි!
johnshen64

5
සමමුහුර්තකරණය ගැන ඔබ පවසන දේ වැරදියි: ලිනක්ස් ලේඛනයට අනුව, drop_cache වෙත ලිවීමෙන් පැහැදිලි වන්නේ පිරිසිදු අන්තර්ගතයන් පමණි (දැනටමත් සමමුහුර්ත කර ඇත). හැරුණු විට, එය සමමුහුර්ත නොවන දත්ත අතහැර දැමුවද, හැඹිලිය ඉවත් කිරීමට පෙර සමමුහුර්ත විධානය ටයිප් කිරීමෙන් ඔබේ දත්ත සුරැකෙනු ඇතැයි පැවසීම වැරදිය: සමමුහුර්ත විධානය drop_cache ලිවීම අතර ශුන්‍ය නොවන කාලයක් ඇත, එබැවින් මෙම කාලය තුළදී ඕනෑම දත්තයක් එකතු කළ හැකිය. මෙහි පරමාණුක කිසිවක් නොමැත.
කොන්ගෙලි 501

3
මට එම තොරතුරු මෙහි ලැබුණි: kernel.org/doc/Documentation/sysctl/vm.txt - "මෙය විනාශකාරී නොවන ක්‍රියාවක් වන අතර කිසිදු අපිරිසිදු වස්තුවක් නිදහස් නොකරනු ඇත." පහත වැටුණු හැඹිලි ප්‍රමාණය වැඩි කිරීමට සමමුහුර්තකරණය භාවිතා කළ හැකි බව ද එය පවසයි (නැවත ලිවීමේ හැඹිලි සඳහා).
කොන්ගෙලි 501

27
"Sudo sysctl vm.drop_caches = 1" over "sudo sh -c 'echo 1> / proc / sys / vm / drop_caches'"
Raúl Salinas-Monteagudo

8
rootslm මම teeroot ලෙස ලිවීමට භාවිතා කිරීමට කැමතියි :echo 3 | sudo tee /proc/sys/vm/drop-caches
pqnet
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.