IOWait යනු කුමක්දැයි කිසිවෙකුට හරියටම පැහැදිලි කළ හැකිද?


211

අයෝයිට් ගැන මා කියවා ඇති පරිදි, එය තවමත් මට අභිරහසකි.

IO මෙහෙයුම් අවසන් වන තෙක් CPU විසින් ගත කරන කාලය මම දනිමි, නමුත් හරියටම කුමන ආකාරයේ IO මෙහෙයුම්ද? මට විශ්වාස නැති දේ, එය එතරම් වැදගත් වන්නේ ඇයි? IO මෙහෙයුම අවසන් වන විට CPU හට වෙනත් දෙයක් කළ නොහැකිද, පසුව දත්ත සැකසීමට නැවත යා හැකිද?

IO සඳහා හරියටම බලා සිටියේ කුමන ක්‍රියාවලියද යන්න හඳුනා ගැනීමට නිවැරදි මෙවලම් මොනවාද?

IO පොරොත්තු කාලය අවම කර ගත හැකි ක්‍රම මොනවාද?


1
ඉහළ අයෝයිට් යනු කුමක්ද?
මුහම්මද් හුසේන්බාසි

Answers:


107

IO මෙහෙයුම් අවසන් වන තෙක් CPU විසින් ගත කරන කාලය මම දනිමි, නමුත් හරියටම කුමන ආකාරයේ IO මෙහෙයුම්ද? මට විශ්වාස නැති දේ, එය එතරම් වැදගත් වන්නේ ඇයි? IO මෙහෙයුම අවසන් වන විට CPU හට වෙනත් දෙයක් කළ නොහැකිද, පසුව දත්ත සැකසීමට නැවත යා හැකිද?

ඔව්, මෙහෙයුම් පද්ධතිය IO මත අවහිර කර ඇති අතර ක්‍රියාත්මක වීමට වෙනත් ක්‍රියාදාමයන් උපලේඛනගත කරයි. කෙසේ වෙතත්, එම ක්‍රියාවලිය තුළ, එය අසමමුහුර්ත IO භාවිතා නොකරන්නේ නම්, ඕනෑම IO මෙහෙයුමක් අවසන් වන තුරු එය ඉදිරියට නොයනු ඇත.

IO සඳහා හරියටම බලා සිටියේ කුමන ක්‍රියාවලියද යන්න හඳුනා ගැනීමට නිවැරදි මෙවලම් මොනවාද?

ඔබට ප්‍රයෝජනවත් විය හැකි සමහර මෙවලම්

  • iostat, ඔබේ තැටිවල සේවා වේලාවන් නිරීක්ෂණය කිරීමට
  • iotop (ඔබේ කර්නලය එයට සහය දක්වන්නේ නම්), එක් ක්‍රියාවලියකට IO ඉල්ලීම් බිඳවැටීම නිරීක්ෂණය කිරීමට
  • strace, ක්‍රියාවලියක් මඟින් නිකුත් කරනු ලබන සත්‍ය මෙහෙයුම් දෙස බැලීමට

IO පොරොත්තු කාලය අවම කර ගත හැකි ක්‍රම මොනවාද?

  • ඔබට නිදහස් භෞතික මතකයක් ඇති බවට වග බලා ගන්න එවිට මෙහෙයුම් පද්ධතියට මතකයේ තැටි කොටස් රඳවා ගත හැකිය
  • අධික ලෙස ඛණ්ඩනය වීම වළක්වා ගැනීම සඳහා ඔබේ ගොනු පද්ධති තැටි භාවිතය 80% ට වඩා අඩු මට්ටමක තබා ගන්න
  • ඔබේ ගොනු පද්ධතිය සුසර කරන්න
  • බැටරි පිටුබලය සහිත අරාව පාලකය භාවිතා කරන්න
  • io මෙහෙයුම් සිදු කරන විට හොඳ ස්වාරක්ෂක ප්‍රමාණ තෝරන්න

8
අමතක නොකරන්න "ඔබේ පසුගාමී ගබඩාව ඔබගේ I / O භාරය සමඟ පවත්වා ගැනීමට තරම් වේගවත් බවට වග බලා ගන්න."
jgoldschrafe

1
Ave ඩේව් චෙනී, මගේ ක්‍රියාවලිය අක්‍රිය වූ විට එය IO මත රැඳී සිටින නිසාය. ඉතින් IOWait සහ නිෂ්ක්‍රීය අතර වෙනස කුමක්ද?
ctrl-alt-delor

4
IOwait හි සිටින විට, ක්‍රියාවලිය “අඛණ්ඩ නින්දේ” පවතින අතර එයින් අදහස් වන්නේ තැටිවල දත්ත දූෂිත වීමේ අවදානම වළක්වා ගැනීම සඳහා එය මරා දැමිය නොහැකි බවයි. සාමාන්‍ය නිෂ්ක්‍රීය ක්‍රියාවලියක් ඇත්ත වශයෙන්ම කිසිවක් නොකරයි, එබැවින් එය මරා දැමීමේ අවදානම අඩුය.
mveroone

1
ඉහළින් ප්‍රායෝගිකව එයින් අදහස් වන්නේ ඔබේ IO ඉතා මන්දගාමී බවයි. "සේවාදායකය වේගවත් කරන්න" ඔබ CPU සීමිතද නැතහොත් ඔබේ CPU සාගින්නෙන් පෙළෙනවාද යන්න වෙනස් වන්නේ මන්දගාමී නෝට්බුක් තැටිය දත්ත සමුදා සේවාදායකයක් ධාවනය කිරීමට ප්‍රමාණවත් බවත් IO භාරය මඟින් CPU භාවිතා කළ හැකි දේවලින් 2% ක් පමණක් භාවිතා කරන බවත්ය. IO අවසන් කිරීමට පිස්සු.
ටොම් ටොම්

2
OMG මෙහි ඉහළම පිළිතුරු 3 එතරම් වැරදි යැයි මට විශ්වාස කළ නොහැක . Haridsv විසින් පහත පිළිතුර නිවැරදි ය. Io සම්පුර්ණ වන තෙක් කිසිදු cpu එකක් "බලා" නොමැත. ඔව්, සමහර අයෝ අවහිර කළ හැකිය - බොහෝ විට මේ සඳහා හොඳ හේතුවක් තිබේ, සමහර තත්වයන් යටතේ සියලුම අයෝ අවහිර කළ හැකිය. නමුත් සම්පූර්ණයෙන්ම අසමමුහුර්ත මෙහෙයුම් සඳහා අයෝයිට් සිදුවන බව ඔබට දැක ගත හැකිය.
symcbean

49

පැරණි ප්‍රශ්නය, මෑතකදී ගැසුණු නමුත් පවතින පිළිතුරු ප්‍රමාණවත් නොවන බව හැඟුණි.

IOWait අර්ථ දැක්වීම සහ ගුණාංග

IOWait (සාමාන්‍යයෙන් %waඉහළින් ලේබල් කර ඇත) යනු නිෂ්ක්‍රීය උප කාණ්ඩයකි ( %idleසාමාන්‍යයෙන් අර්ථ දක්වා ඇති උපප්‍රවර්ග හැර අනෙක් සියල්ලම නිෂ්ක්‍රීය ලෙස ප්‍රකාශ වේ), එයින් අදහස් කරන්නේ CPU කිසිවක් නොකරන බවයි. එබැවින්, CPU සැකසීමට හැකි තවත් ක්‍රියාවලියක් පවතින තාක් කල් එය එසේ කරනු ඇත. මීට අමතරව, නිෂ්ක්‍රීය, පරිශීලක, පද්ධතිය, අයෝයිට් යනාදිය CPU වලට අදාළ මිනුමකි. වෙනත් වචන වලින් කිවහොත්, අයියෝ බලා සිටීම නිසා ඇති වන නිෂ්ක්‍රීය බව ඔබට අයෝයිට් ගැන සිතිය හැකිය.

හරියටම, අයෝයිට් යනු ප්‍රොසෙසර් කිනිතුල්ලන්ගේ ප්‍රතිශතයක් ලෙස දෘඩාංග බාධා ලැබීමට සහ හැසිරවීමට ගත කරන කාලයයි. මෘදුකාංග බාධා කිරීම් සාමාන්‍යයෙන් වෙන වෙනම ලේබල් කර %siඇත.

වැදගත්කම සහ විභව වැරදි වැටහීම

IOWait වැදගත් වන්නේ එය බොහෝ විට ඔබට IO හි බාධාවක් ඇත්දැයි දැන ගැනීමට ප්‍රධාන මෙට්‍රික් එකක් වන බැවිනි. නමුත් අයෝයිට් හි නොපැවතීම ඔබේ අයදුම්පත IO හි බාධාවක් නොවන බව අදහස් නොවේ . පද්ධතියක් මත ධාවනය වන යෙදුම් දෙකක් සලකා බලන්න. වැඩසටහන 1 දැඩි ලෙස io බාධක සහිත නම් සහ 2 වන වැඩසටහන අධික CPU භාවිතා කරන්නෙකු නම්, %user + %systemCPU හි තවමත් ~ 100% වැනි දෙයක් විය හැකි අතර ඊට අනුරූපව iowait 0 පෙන්වනු ඇත. නමුත් එය සිදුවන්නේ 2 වන වැඩසටහන තීව්‍ර වන අතර සාපේක්ෂව කිසිවක් නොකියන බැවිනි වැඩසටහන 1 නිසා මේ සියල්ල CPU හි දෘෂ්ටි කෝණයෙන් වේ.

IOWait හඳුනා ගැනීමට මෙවලම්

ඩේව් චෙනී සහ ෂර්ක්ස්ගේ සටහන් බලන්න

නමුත් සරල එකක් topද පෙන්වනු ඇත %wa.

IOWait අඩු කිරීම

එසේම, අපි දැන් 2013 ට ආසන්නව සිටින විට, අනෙක් අය පැවසූ දේට අමතරව, හුදෙක් නියමයි IO ගබඩා උපාංගවල විකල්පය දැරිය හැකි මිලකට, එනම් එස්එස්ඩී ය. SSDs නියමයි !!!


36

iowait

iowaitකාලය සකසනය / සකසන බලා සිටින (එනම් තුළ සිටින වේ අලස රාජ්ය හා උන් කිසිවක් එහි ඇත්ත තුළදී,) විය කැපී පෙනෙන තැටිය I / O විමසීම්.

සාමාන්‍යයෙන් මෙයින් අදහස් කරන්නේ බ්ලොක් උපාංග (එනම් භෞතික තැටි, මතකය නොවේ) ඉතා මන්දගාමී හෝ සරලව සංතෘප්ත බවයි.

ඔබේ පද්ධතියේ අධික බරක් සහිත සාමාන්‍යයක් ඔබ දුටුවහොත් සහ බොහෝ විට ඇත්ත වශයෙන්ම I / O රැඳී සිටීම නිසා ඇති බව පරීක්ෂා කිරීමේ දැන්වීමකදී, ඔබේ පද්ධතිය කරදරයට පත්ව ඇති බවක් එයින් අදහස් නොකෙරේ - මෙය සිදු වන්නේ ඔබේ විට ය යන්ත්‍රයට I / O- බැඳී ඇති ක්‍රියාවලි හැර වෙනත් කිසිවක් කළ නොහැක (එනම් සියල්ලටම වඩා I / O කරන ක්‍රියාවලීන් (I / O- නොවන පද්ධති ඇමතුම්). ඔබ පද්ධතියේ කරන ඕනෑම දෙයක් තවමත් ඉතා ප්‍රතිචාරාත්මක වන බව පෙනේ.

මෙවලම්

  • sar( sysstatපැකේජයෙන්, බොහෝ * නික්ස් යන්ත්‍රවල ඇත)
  • iostat
  • sarface(ඉදිරිපස කෙළවරේ සිට sar)

7
දැඩි ලෙස කිවහොත්, I / O පොරොත්තු කාලය පිළිබඳ අර්ථ දැක්වීම වලංගු වන්නේ තනි ප්‍රොසෙසර් පද්ධති මත පමණක් බව සලකන්න. බහු ප්‍රොසෙසර් පද්ධති සඳහා එය තරමක් පිරිපහදු කළ යුතුය: veithen.blogspot.be/2013/11/iowait-linux.html
ඇන්ඩ්‍රියාස් වීතන්

එය කොතරම් දුරට iowaitබලපායිද Load Average? ජාලය සඳහා නූල් 100 ක් බලා සිටින බව පවසන්න, LA 100 ක් වේවිද?
අයිවන් බාලෂොව්

35

මෙම සබැඳියෙන් පැහැදිලි කිරීම සහ උදාහරණ මට ඉතා ප්‍රයෝජනවත් විය: “අයෝයිට්” යනු කුමක්ද? . BTW, සම්පූර්ණත්වය සඳහා, මෙහි I / O යන්නෙන් දැක්වෙන්නේ I / O තැටියයි, නමුත් මෙම අනෙක් ලිපියේ විස්තර කර ඇති පරිදි ජාල සවිකර ඇති තැටියක (nfs වැනි) I / O ඇතුළත් කළ හැකිය .

මම වැදගත් කොටස් කිහිපයක් උපුටා දක්වන්නෙමි (සබැඳිය අක්‍රිය වුවහොත්), සමහර ඒවා අනෙක් අය දැනටමත් පවසා ඇති දේ පුනරාවර්තනය වනු ඇත, නමුත් මට අවම වශයෙන් මේවා පැහැදිලි ය:

එය එක් වාක්‍යයකින් සාරාංශගත කිරීම සඳහා, 'අයෝයිට්' යනු CPU අක්‍රියව පවතින කාල ප්‍රතිශතය වන අතර අවම වශයෙන් එක් I / O ප්‍රගතියක් ඇත.

සෑම CPU එකක්ම ප්‍රාන්ත හතරෙන් එකක් විය හැකිය: පරිශීලක, sys, idle, iowait.

එක් ක්‍රියාවලියක් I / O සඳහා බලා සිටින අතරතුර පද්ධතියට වෙනත් ක්‍රියාදාමයන් ක්‍රියාත්මක වීමට සුදානම් වන විට කුමක් සිදුවේදැයි මම කල්පනා කළෙමි. පහත එය පැහැදිලි කරයි:

CPU අක්‍රිය නම්, කර්නලය විසින් තීරණය කරනුයේ දැනට දේශීය තැටියකට හෝ දුරස්ථව සවිකර ඇති තැටියට (NFS) අවම වශයෙන් එක් I / O ප්‍රගතියක් තිබේද යන්නයි. තිබේ නම්, 'අයෝයිට්' කවුන්ටරය එකකින් වැඩි කරයි. එම CPU වෙතින් ආරම්භ කරන ලද I / O ප්‍රගතියක් නොමැති නම්, 'නිෂ්ක්‍රීය' කවුන්ටරය එකකින් වැඩි වේ.

මෙන්න උදාහරණයක්:

CPU මත වැඩසටහන් දෙකක් ක්‍රියාත්මක වන බව කියමු. එකක් තැටියෙන් කියවන 'ඩීඩී' වැඩසටහනකි. අනෙක I / O නොකරන නමුත් 100% ක්ම පරිගණක කටයුතු සඳහා වැය කරන වැඩසටහනකි. දැන් උපකල්පනය කරන්න I / O උප පද්ධතිය සමඟ ගැටළුවක් ඇති බවත් භෞතික I / Os සම්පූර්ණ කිරීමට තත්පරයක් ගතවන බවත්. I / Os සම්පුර්ණ වන තෙක් බලා සිටින අතරතුර 'dd' වැඩසටහන නිදා සිටින විට අනෙක් වැඩසටහනට එම CPU මත ක්‍රියාත්මක විය හැකිය. ඔරලෝසු බාධා කිරීම් සිදු වූ විට, සෑම විටම පරිශීලක මාදිලියේ හෝ පද්ධති ප්‍රකාරයේ ක්‍රියාත්මක වන වැඩසටහනක් ඇත. එබැවින්,% නිෂ්ක්‍රීය සහ% අයෝයිට් අගයන් 0 වනු ඇත. අයෝයිට් දැන් 0 ක් වුවද, එයින් අදහස් කරන්නේ I / O ගැටළුවක් නොමැති බවයි. මන්ද භෞතික I / Os සම්පූර්ණ කිරීමට තත්පරයක් ගත වුවහොත් පැහැදිලිවම එකක් තිබේ.

සම්පූර්ණ පා read ය කියවීම වටී. මෙන්න මෙම පිටුවේ කැඩපතක් , එය පහළට ගියහොත්.


1

සොලාරිස් සඳහා, I / O මෙහෙයුම් ක්‍රියාත්මක වන්නේ කුමක් දැයි බැලීමට අවශ්‍ය නම් ක්‍රියාවලි මොනවාදැයි බැලීමට මම DTrace භාවිතා කරමි. ලිනක්ස් සඳහා, කර්නලය හා ක්‍රියාවලි ඇමතුම් වලට සමාන මට්ටමේ නිරාවරණයක් සපයන සිස්ටම් ටැප් නමින් සමාන වැඩසටහනක් ඇත.

DTrace ඉගෙන ගැනීමේදී මා භාවිතා කළ එක් උදාහරණයක් නම් cpවිධානයක් විධානයකට සංසන්දනය කිරීමයි dd. ddඑය ලිවීම සඳහා තවත් බොහෝ දේ කියවන බව ඔබට පෙනෙනු ඇත , cpඑසේ නොවන්නේ බොහෝ විට ddපෙරනිමියෙන් ස්වාරක්ෂක ප්‍රමාණය භාවිතා කිරීම නිසාය (මට නිවැරදිව මතක නම්).


0

ඔබගේ යෙදුම් සහ සැකසුම මත රඳා පවතින්නේ කුමන ආකාරයේ IO මෙහෙයුම්ද යන්න.

සමහර අවස්ථාවලදී CPU හට එය දිගටම කරගෙන යාමට අවශ්‍ය දත්ත හෝ උපදෙස් ලබා ගත නොහැකි බැවින් එය වැදගත් වේ. සමහර අවස්ථාවල එය දිගටම කරගෙන යා හැකි නමුත් එය කළ හැකි දේ මත යෙදුම් ක්‍රියාත්මක වන්නේ කුමක් ද යන්න මත රඳා පවතී. ඔබට තනි නූල් යෙදුමක් තිබේ නම් එය බොහෝ තැටි ප්‍රවේශයන් ලබා ගනී නම් ඔබට බලා සිටීමට සිදු වේ.

IO කාලය අවම කිරීම සඳහා, වැඩි වැඩියෙන් මතකය මිලදී ගන්න, වේගවත් තැටි ලබා ගන්න, ඔබ සතුව ඇති තැටි defrag කරන්න.

එය ගෘහස්ථ යෙදුමක් නම් එය බාධකයක් වන අතර එය විශාල කොටස් වලින් කියවීමට හෝ IO අසමමුහුර්තව කිරීමට ප්‍රශස්තිකරණය කළ හැකිදැයි බලන්න.


හරි, ඉතින් අයිඕවයිට් අවහිර කරන අයි ඕ මෙහෙයුමක කාලය ගත කරනවාද?
පීටර් කෘමින්ස්

උදාහරණයක් ලෙස, මම තෝරාගත් () හෝ ඡන්ද විමසීමක් () කර එය අවහිර කරන්නේ නම්, විස්තර කරන්නෙකු ලබා ගන්නා තෙක් බලා සිටින කාලය අයෝයිට් වේලාව වේ ද?
පීටර් කෘමින්ස්

මම හිතන්නේ එය ක්‍රමලේඛන ප්‍රශ්නයක් ලෙස පෙනෙන බැවින් එය SO ට අයත් වේ.
ජෙරමි ප්‍රංශ

පීටරිස් - ඔව්, ඒ ගැන සිතීමට හොඳ ක්‍රමයක්.
user2278

0

ps aux භාවිතා කිරීමෙන් STAT ක්‍රියාවලිය මුද්‍රණය කළ හැකිය.
එය D හෝ Ds නම්, ක්‍රියාවලිය
අඛණ්ඩ නින්දකට (සාමාන්‍යයෙන් IO) ක්‍රියාවලියක් අඛණ්ඩ නින්දට ඇතුළු වන විට, nr_iowait of runqueue එකතු වන අතර nr_iowait> 0 නම්, cpu හි අක්‍රිය කාලය ගණනය කෙරේ. iowait වෙත

vmstat මඟින් ක්‍රියාවලි වාර
ගණන කොපමණ දැයි පෙන්වයි r: ධාවන කාලය එන තෙක් බලා සිටින ක්‍රියාවලි ගණන.
b: අඛණ්ඩ නින්දේ ක්‍රියාවලි ගණන.

http://bencane.com/2012/08/06/troubleshooting-high-io-wait-in-linux/

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.