නිදහස් මතකයෙන් 90% ක් පුරවන්නේ කෙසේද?


187

මට අඩු සම්පත් පරික්ෂා කිරීමක් කිරීමට අවශ්‍ය වන අතර ඒ සඳහා මට 90% නිදහස් මතකය පිරී තිබිය යුතුය.

මම කොහොමද මත මෙය කළ හැකි *nixක්රමය?


3
එය ඇත්ත වශයෙන්ම කිසියම් * නික්ස් පද්ධතියක වැඩ කළ යුතුද?
CVn

34
ජට් පිරවුම් මතකය වෙනුවට, ඔබට සීමිත මතක ප්‍රමාණයක් ඇති වීඑම් එකක් (ඩොකර්, හෝ වැග්‍රන්ට් හෝ ඒ හා සමාන දෙයක් භාවිතා කරමින්) නිර්මාණය කළ හැකිද?
abendigo

4
@abendigo QA සඳහා මෙහි ඉදිරිපත් කර ඇති විසඳුම් බොහොමයක් ප්‍රයෝජනවත් වේ: විශේෂිත වේදිකාවක් නොමැති සාමාන්‍ය මෙහෙයුම් පද්ධතියක් සඳහා VM හෝ කර්නල් ඇරඹුම් පරාමිතීන් ප්‍රයෝජනවත් විය හැකි නමුත් ඉලක්කගත පද්ධතියේ මතක පිරිවිතර ඔබ දන්නා කාවැද්දූ පද්ධතියක් සඳහා මම කැමතියි නිදහස් මතකය පිරවීම සඳහා යන්න.
එඩ්වඩ් ෆ්ලොරිනෙස්කු

2
මෙහි ලකුණු ලබා ගැනීමෙන් වෙනත් අය ටිකක් කම්පනයට පත් වුවහොත් : meta.unix.stackexchange.com/questions/1513/… ?
ගෝල්ඩිලොක්ස්

Answers:


166

stress-ng යනු POSIX පද්ධති මත cpu / mem / io / hdd ආතතිය අනුකරණය කරන වැඩ බර උත්පාදක ය. මෙම ඇමතුම ලිනක්ස් <3.14 හි උපක්‍රමය කළ යුතුය:

stress-ng --vm-bytes $(awk '/MemFree/{printf "%d\n", $2 * 0.9;}' < /proc/meminfo)k --vm-keep -m 1

ලිනක්ස්> = 3.14 සඳහා, ඔබට MemAvailableමාරුවීමකින් තොරව නව ක්‍රියාවලීන් සඳහා පවතින මතකය තක්සේරු කිරීමට භාවිතා කළ හැකිය:

stress-ng --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 * 0.9;}' < /proc/meminfo)k --vm-keep -m 1

/proc/meminfoඇමතුම free(1)/ vm_stat(1)/ etc සමඟ අනුවර්තනය කරන්න . ඔබට එය අතේ ගෙන යා හැකි නම්.


3
ආතතිය --vm-bytes $ (awk '/ MemFree / {printf "% d \ n", $ 2 * 0.097;}' </ proc / meminfo) k --vm-keep -m 10
රොබට්

1
බොහෝ MemFree මෙහෙයුම් පද්ධතිය විසින් තබා ඇති බැවින් මම ඒ වෙනුවට MemAvailable භාවිතා කළෙමි. මෙය මට සෙන්ට් ඕඑස් 7 හි 92% ක භාවිතයක් ලබා දුන්නේයstress --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 * 0.98;}' < /proc/meminfo)k --vm-keep -m 1
කුජි

දැන ගැනීම සතුටක්, "නව යෙදුම් ආරම්භ කිරීම සඳහා කොපමණ මතකයක් තිබේදැයි තක්සේරු කිරීම සඳහා, හුවමාරු නොවී" සඳහා MemAvailable එකතු කරන ලදි , git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ බලන්න. සහ git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/…
tkrennwa

1
අමතර සටහනක් සේම, දෙකම සැපයීම --vm 1 and --vm-keepඉතා වැදගත් වේ. සරලව --vm-bytesකිසිවක් නොකරන අතර ඔබට අවශ්‍ය / අවශ්‍ය තරම් මතකය වෙන් කළ හැකි යැයි සිතමින් ඔබ නොමඟ යවනු ඇත. 256G මතකය වෙන් කිරීමෙන් මා සනීපාරක්ෂාව පරීක්ෂා කර බැලීමට උත්සාහ කරන තෙක් මම මෙයින් ටිකක් පීඩා වින්දා. මෙය පිළිතුරේ අඩුපාඩුවක් නොවේ, එය නිවැරදි ධජ සපයයි, අතිරේක අවවාදයයි.
ffledgling

මේ නිසා ඇත්තේ එයයි -m 1. ආතති මෑන් පිටුවට අනුව, -m Nකෙටියෙන් --vm N: Nmalloc()/free()
ස්පොන්

93

ඔබට malloc()අවශ්‍ය මතකයට සී වැඩසටහනක් ලිවිය හැකි අතර පසුව mlock()මතකය මාරු වීම වැළැක්වීමට භාවිතා කරන්න.

යතුරුපුවරු ආදානය සඳහා වැඩසටහනට රැඳී සිටීමට ඉඩ දෙන්න, සහ මතකය අගුළු ඇරීමට, මතකය නිදහස් කර පිටවීමට.


26
බොහෝ කලකට පෙර මට සමාන භාවිත නඩුවක් පරීක්ෂා කිරීමට සිදු විය. ඔබ එම මතකයට යමක් ලියන තුරු එය සැබවින්ම වෙන් නොකෙරෙන බව මම නිරීක්ෂණය කළෙමි (එනම් පිටු දෝෂයක් සිදුවන තුරු). Mlock () ඒ ගැන සැලකිලිමත් වේදැයි මට විශ්වාස නැත.
පූර්නා

2
මම සිරි සමඟ එකඟ වෙමි; කෙසේ වෙතත්, එය රඳා පවතින්නේ ඔබ භාවිතා කරන යුනික්ස් ප්‍රභේදය මත ය.
ඇන්තනි

2
කේතය සඳහා යම් ආශ්වාදයක් . තව දුරටත්, මම හිතන්නේ ඔබට මතකය අගුළු ඇරීමට / නිදහස් කිරීමට අවශ්‍ය නැත . ඔබේ ක්‍රියාවලිය අවසන් වූ විට මෙහෙයුම් පද්ධතිය ඔබ වෙනුවෙන් එය කරනු ඇත.
සෙබස්තියන්

9
ඔබට බොහෝ විට මතකයට ලිවීමට සිදුවනු ඇත, ඔබ එය අනිසි ලෙස භාවිතා කළහොත් කර්නලය ඉක්මවා යා හැකිය. වින්‍යාසගත කර ඇත්නම්, උදා: ලිනක්ස් ඇත්ත වශයෙන්ම මතකය රහිතව malloc සාර්ථකව ආපසු යාමට ඉඩ දෙයි, සහ ඇත්ත වශයෙන්ම මතකය එය ලියන විට පමණක් වෙන් කරයි. Win.tue.nl/~aeb/linux/lk/lk-9.html
Bjarke Freund-Hansen

7
E සෙබස්තියන්: callocIIRC එකම ගැටලුවකට මුහුණ දෙනු ඇත. සියලුම මතකය එකම කියවීමට පමණක් ශුන්‍ය කළ පිටුවකට යොමු කරයි. ඔබ එය ලිවීමට උත්සාහ කරන තුරු එය සැබවින්ම වෙන් නොකෙරේ (එය කියවීමට පමණක් බැවින් එය ක්‍රියා නොකරනු ඇත). මා දන්නා බව සැබවින්ම විශ්වාස කළ හැකි එකම ක්‍රමය වන්නේ memsetමුළු බෆරයෙන් එකක් කිරීමයි. වැඩි විස්තර සඳහා පහත පිළිතුර බලන්න stackoverflow.com/a/2688522/713554
ලියෝ

47

සීමිත මතකයක් සහිත වීඑම් එකක් ධාවනය කර මෘදුකාංගය පරීක්ෂා කිරීම ධාරක යන්ත්‍රයේ මතකය පිරවීමට උත්සාහ කරනවාට වඩා කාර්යක්ෂම පරීක්ෂණයක් වනු ඇතැයි මම යෝජනා කරමි.

අඩු මතක තත්වයක් වෙනත් තැනක OOM දෝෂ ඇති කර මුළු මෙහෙයුම් පද්ධතියම එල්ලා තබන්නේ නම්, ඔබ පරීක්‍ෂා කරන VM එක ඔබේ යන්ත්‍රය තුළ පමණක් එල්ලා තැබීමෙන් ඔබට වෙනත් ප්‍රයෝජනවත් ක්‍රියාවලීන් ක්‍රියාත්මක විය හැකිය.

ඔබේ පරීක්ෂාව CPU හෝ IO තීව්‍ර නොවේ නම්, ඔබට එකවර VMs පවුලක් මත විවිධාකාර අඩු මතක ප්‍රමාණවලින් පරීක්ෂණ සිදු කළ හැකිය.


34

මෙම HN අදහස් දැක්වීමෙන්: https://news.ycombinator.com/item?id=6695581

Dd හෝ ඊට සමාන හරහා / dev / shm පුරවන්න.

swapoff -a
dd if=/dev/zero of=/dev/shm/fill bs=1k count=1024k

8
සියලුම * නික්ස් වල / dev / shm නොමැත. තවත් අතේ ගෙන යා හැකි අදහසක් තිබේද?
ටඩියුස් ඒ. කඩුබෝව්ස්කි

1
pvස්ථාපනය කර ඇත්නම් , එය ගණන් බැලීමට උපකාරී වේ:dd if=/dev/zero bs=1024 |pv -b -B 1024 | dd of=/dev/shm/fill bs=1024
ඔතියස්

1
ඔබට වේගය අවශ්‍ය නම්, මෙම ක්‍රමය නිවැරදි තේරීම වේ! මන්ද එය තත්පර කිහිපයකින් අපේක්ෂිත RAM ප්‍රමාණය වෙන් කරයි. / Dev / urandom මත සම්බන්ධ නොවන්න, එය 100% CPU භාවිතා කරන අතර ඔබේ RAM විශාල නම් මිනිත්තු කිහිපයක් ගත වේ. නූතන උබුන්ටු / ඩේබියන් ඩිස්ට්‍රෝස් වල YET, / dev / shm ට සාපේක්ෂ ප්‍රමාණයක් ඇත, එහි ප්‍රමාණය භෞතික RAM වලින් 50% ක් පෙරනිමිය. ඔබට / dev / shm නැවත ගණනය කළ හැකිය, නැතහොත් නව සවිකිරීමේ ස්ථානයක් නිර්මාණය කළ හැකිය. ඔබට වෙන් කිරීමට අවශ්‍ය සත්‍ය ප්‍රමාණය එහි ඇති බවට වග බලා ගන්න.
develCuy

33

ඔබ මූලික GNU මෙවලම් (තිබේ නම් sh, grep, yesහා head) ඔබ මෙය කළ හැකි:

yes | tr \\n x | head -c $BYTES | grep n
# Protip: use `head -c $((1024*1024*2))` to calculate 2MB easily

මෙය ක්‍රියාත්මක වන්නේ grep විසින් RAM හි මුළු දත්ත රේඛාවම පටවන බැවිනි (තැටි රූපයක් අඹරන විට මම මෙය තරමක් අවාසනාවන්ත ආකාරයකින් ඉගෙන ගතිමි). නව රේඛා yesප්‍රතිස්ථාපනය කිරීමෙන් ජනනය වන රේඛාව අනන්තවත් දිගු වන නමුත් එය බයිට් headවලට සීමා $BYTESවේ, එබැවින් grep මතකයේ $ BYTES පටවනු ඇත. ග්‍රෙප් මා වෙනුවෙන් 100-200KB වැනි භාවිතා කරයි, ඔබට එය වඩාත් නිවැරදි මුදලකට අඩු කිරීමට අවශ්‍ය විය හැකිය.

ඔබට කාල සීමාවක් එකතු කිරීමට අවශ්‍ය නම්, මෙය ඉතා පහසුවෙන් කළ හැකිය bash(ක්‍රියාත්මක නොවනු ඇත sh):

cat <(yes | tr \\n x | head -c $BYTES) <(sleep $NumberOfSeconds) | grep n

මෙම <(command): දෙයක්, මෙහි එය මත වැඩි තොරතුරු ටිකක් දැන ගත යුතු නමුත් බොහෝ විට ඉතා ප්රයෝජනවත් වේ පෙනේ http://tldp.org/LDP/abs/html/process-sub.html

එවිට භාවිතය සඳහා cat: catපිටවන තෙක් යෙදවුම් සම්පුර්ණ වන තෙක් බලා සිටින අතර, එක් පයිප්පයක් විවෘතව තබා ගැනීමෙන්, එය grep පණපිටින් තබා ගනී.

ඔබට pvRAM භාවිතය සෙමින් වැඩි කිරීමට අවශ්‍ය නම් :

yes | tr \\n x | head -c $BYTES | pv -L $BYTESPERSEC | grep n

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

yes | tr \\n x | head -c $((1024*1024*1024)) | pv -L $((1024*1024)) | grep n

තත්පරයට 1MB අනුපාතයකින් ගිගාබයිට් දක්වා භාවිතා කරනු ඇත. අමතර ප්‍රසාද දීමනාවක් ලෙස, pvවර්තමාන භාවිත අනුපාතය සහ මෙතෙක් භාවිතා කර ඇති මුළු භාවිතය ඔබට පෙන්වනු ඇත. ඇත්ත වශයෙන්ම මෙය පෙර ප්‍රභේද සමඟ ද කළ හැකිය:

yes | tr \\n x | head -c $BYTES | pv | grep n

| pv |කොටස ඇතුළත් කිරීමෙන් ඔබට වත්මන් තත්වය පෙන්වනු ඇත (ප්‍රතිදානය සහ එකතුව, පෙරනිමියෙන්, මම සිතන්නේ - එසේ නොමැතිනම් මිනිසා (ual) පිටුව බලන්න).


තවත් පිළිතුරක් ඇයි? පිළිගත් පිළිතුර පැකේජයක් ස්ථාපනය කිරීම නිර්දේශ කරයි (පැකේජ කළමණාකරුවෙකු අවශ්‍ය නොවී සෑම චිප්සෙට් සඳහාම නිකුතුවක් ඇති බව මම විශ්වාස කරමි); ඉහළම ඡන්දය දුන් පිළිතුර සී වැඩසටහනක් සම්පාදනය කිරීම නිර්දේශ කරයි (ඔබේ ඉලක්ක වේදිකාව සඳහා සම්පාදනය කිරීම සඳහා මට සම්පාදකයෙකු හෝ මෙවලම් කට්ටලයක් ස්ථාපනය කර නොතිබුණි); දෙවන ඉහළම ඡන්දය දුන් පිළිතුර VM එකක යෙදුම ධාවනය කිරීම නිර්දේශ කරයි (ඔව්, මෙම දුරකථනයේ අභ්‍යන්තර sdcard එක usb හෝ වෙනත් දෙයක් හරහා dd කර වර්චුවල් බොක්ස් රූපයක් නිර්මාණය කිරීමට මට ඉඩ දෙන්න); තෙවනුව යෝජනා කරන්නේ ඇරඹුම් අනුපිළිවෙලෙහි යම් දෙයක් වෙනස් කිරීමට යෝජනා කරන අතර එය අපේක්ෂිත පරිදි RAM පුරවන්නේ නැත; සිව්වනුව පමණක් ක්‍රියාත්මක වන්නේ / dev / shm සවිකිරීමේ ස්ථානය (1) පවතින අතර (2) විශාලය (නැවත ගණනය කිරීමේ අවශ්‍ය මූල); පස්වැන්න නියැදි කේතයකින් තොරව ඉහත බොහෝ දේ ඒකාබද්ධ කරයි; හයවැන්න හොඳ පිළිතුරක් නමුත් මගේම ප්‍රවේශයක් ඉදිරිපත් කිරීමට පෙර මෙම පිළිතුර මා දුටුවේ නැත, ඒ නිසා මම සිතුවා මගේම දෑ එකතු කර ගැනීමට, එය මතක තබා ගැනීමට හෝ ටයිප් කිරීමට කෙටි නිසා පටල රේඛාව ඇත්ත වශයෙන්ම කාරණයේ හරය බව ඔබට නොපෙනේ; හත්වන තැනැත්තා නැවත ප්‍රශ්නයට පිළිතුරු සපයන්නේ නැත (ඒ වෙනුවට ක්‍රියාවලියක් සීමා කිරීමට ulimit භාවිතා කරයි); අටවැන්න ඔබව පයිතන් ස්ථාපනය කිරීමට උත්සාහ කරයි; නවවන පුද්ගලයා සිතන්නේ අප සියල්ලන්ම ඉතා නිර්ව්‍යාජ නොවන අතර අවසානයේ දහවන තැනැත්තා තමාගේම C ++ වැඩසටහනක් ලියා ඇති අතර එමඟින් ඉහළම ඡන්දය දුන් පිළිතුරට සමාන ප්‍රශ්නයක් ඇති කරයි.


ලස්සන විසඳුමක්. දෝෂය පමණක් නම්, ඉදිකිරීම් වල පිටවීමේ කේතය 1 ක් වන නිසා grep ගැලපීමක් සොයා නොගනී. Stackoverflow.com/questions/6550484/… වෙතින් ලැබෙන විසඳුම් කිසිවක් එය නිවැරදි කරන බවක් නොපෙනේ.
හොල්ගර් බ්‍රැන්ඩ්ල්

Ol හොල්ගර් බ්‍රැන්ඩ්ල් හොඳ කරුණක්, එය නිවැරදි කරන්නේ කෙසේදැයි මම නොදනිමි. මා අසා ඇති පළමු අවස්ථාව මෙයයි set -e, එබැවින් මම යමක් ඉගෙන ගතිමි :)
ලූක්

ON කවචය ආරම්භ වූ දින සිට පිළිබිඹු වන විචල්‍යයකින් නිමවා ඇති බැවින් තත්පර හොඳ තේරීමක් ලෙස නොපෙනේ. tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html
හොල්ගර් බ්‍රැන්ඩ්ල්

Ol හොල්ගර් බ්‍රැන්ඩ්ල් හොඳ ඇල්ලීම, මම එය දැන සිටියේ නැත. දැනට තත්පර මිලියන 3 ක් සඳහා විවෘතව ඇති පර්යන්තයක් සොයා ගැනීමට කරුණාවන්තයි: ඩී. මම ලිපිය යාවත්කාලීන කළෙමි.
ලූක්

සිසිල් තාක්ෂණය! time yes | tr \\n x | head -c $((1024*1024*1024*10)) | grep n(10 GiB මතකය භාවිතා කරන්න) මිනිත්තු 1 තත්පර 46 ක් ගතවේ. දී julman99 ගේ eatmemory වැඩසටහන ධාවනය github.com/julman99/eatmemory තත්පර 6 ගනී. ... හොඳයි, බාගත කිරීම සහ සම්පාදනය කිරීමේ වේලාව, නමුත් එය කිසිදු ගැටළුවක් නොමැතිව සම්පාදනය කර ඇත ... සහ ඉතා ඉක්මණින් ... මගේ RHEL6.4 යන්ත්‍රයේ. තවමත්, මම මෙම විසඳුමට කැමතියි. රෝදය ප්‍රතිනිර්මාණය කරන්නේ ඇයි?
මයික් එස්


19

මගේ තිත් ලිපිගොනු වල සමාන දෙයක් කිරීමට මම ශ්‍රිතයක් තබා ගනිමි. https://github.com/sagotsky/.dotfiles/blob/master/.functions#L248

function malloc() {
  if [[ $# -eq 0 || $1 -eq '-h' || $1 -lt 0 ]] ; then
    echo -e "usage: malloc N\n\nAllocate N mb, wait, then release it."
  else 
    N=$(free -m | grep Mem: | awk '{print int($2/10)}')
    if [[ $N -gt $1 ]] ;then 
      N=$1
    fi
    sh -c "MEMBLOB=\$(dd if=/dev/urandom bs=1MB count=$N) ; sleep 1"
  fi
}

1
IMHO සඳහා ඇති හොඳම විසඳුම මෙයයි, එයට අවශ්‍ය වන්නේ වැඩ කිරීමට dd පමණක් වන බැවින් අනෙක් සියලුම දෑ ඕනෑම කවචයක වැඩ කළ හැකිය. අවම වශයෙන් තාවකාලිකව හෝ ඩීඩී නිපදවන දත්ත වලට වඩා එය ඇත්ත වශයෙන්ම මතකය මෙන් දෙගුණයක් ප්‍රකාශ කරන බව සලකන්න. ඩෙබියන් 9, ඩෑෂ් 0.5.8-2.4 මත පරීක්ෂා කර ඇත. ඔබ MEMBLOB කොටස ධාවනය කිරීම සඳහා bash භාවිතා කරන්නේ නම්, එය සැබවින්ම මන්දගාමී වන අතර dd නිපදවන ප්‍රමාණය මෙන් හතර ගුණයක් භාවිතා කරයි.
පී.පෙටර්

17

සරල පයිතන් විසඳුමක් කොපමණ ප්‍රමාණයක් තිබේද?

#!/usr/bin/env python

import sys
import time

if len(sys.argv) != 2:
    print "usage: fillmem <number-of-megabytes>"
    sys.exit()

count = int(sys.argv[1])

megabyte = (0,) * (1024 * 1024 / 8)

data = megabyte * count

while True:
    time.sleep(1)

7
එය බොහෝ විට ඉක්මණින් හුවමාරු වනු ඇත, මතක පීඩනය කෙරෙහි සත්‍ය බලපෑමක් ඇති නොකරයි (ඔබ සියලු හුවමාරුව පුරවා නොගන්නේ නම්, සාමාන්‍යයෙන් ටික වේලාවක් ගතවනු ඇත)
ජෝකිම් සෝවර්

1
RAM පවතින විට යුනික්ස් හුවමාරු වන්නේ ඇයි? අවශ්‍ය විටෙක තැටි හැඹිලිය ඉවත් කිරීමට මෙය සැබවින්ම පිළිගත හැකි ක්‍රමයකි.
ඇලෙක්සැන්ඩර් ෂ්චෙබ්ලිකින්

Lex ඇලෙක්සැන්ඩර් ෂෙච්බ්ලිකින් මෙම ප්‍රශ්නය තැටි හැඹිලිය ඉවත් කිරීම ගැන නොවේ (එය කාර්ය සාධනය පරීක්ෂා කිරීම සඳහා ප්‍රයෝජනවත් වන නමුත් අඩු සම්පත් පරීක්ෂණ සඳහා නොවේ).
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

1
මගේ මතකය අවධාරණය කිරීමට මම උත්සාහ නොකළද, මෙම විසඳුම මගේ පරීක්ෂණ වලදී ගිග් එකක් හෝ දෙකක් එකතු කිරීමට ක්‍රියා කළේය. එහෙත්, o ජෝකිම්සෝවර්ට යමෙකුට sysctl vm.swappiness=0vm.min_free_kbytes කුඩා අංකයකට සැකසිය හැකිය, සමහර විට 1024 විය හැකිය. මම එය උත්සාහ කර නැත, නමුත් ලියකියවිලි පවසන්නේ ඔබ මාරු වීමේ ඉක්මන් බව පාලනය කරන්නේ මේ ආකාරයට බවයි ... ඔබ විය යුතුය ඔබේ පරිගණකයේ OOM තත්වයක් ඇති කරන තාක් දුරට එය මන්දගාමී කිරීමට හැකි වේ. Kernel.org/doc/Documentation/sysctl/vm.txt සහ kernel.org/doc/gorman/html/understand/understand005.html
මයික් එස්

1GB සඳහා එක් ලයිනර්: python -c "x = (1 * 1024 * 1024 *
1024/8

11

රැම්ෆ් තිබේ නම් එය කෙසේද? එය සවි කර විශාල ගොනුවක් හරහා පිටපත් කරන්න? කිසිදු තියෙනවා නම් /dev/shmකිසිම ramfs සහ - මම සමහර ආදාන වටිනාකම මත පදනම් වූ විශාල malloc කරන්නේ බව ඉතා කුඩා C වැඩසටහන් අනුමාන? විශාල මතකයක් සහිත බිට් 32 පද්ධතියක් මත එකවර කිහිප වතාවක් ධාවනය කිරීමට සිදුවිය හැකිය.


9

සීමිත ක්‍රියාවලියක් සහිත විශේෂිත ක්‍රියාවලියක් පරීක්ෂා කිරීමට ඔබට අවශ්‍ය නම්, වෙන් කළ හැකි ulimitමතක ප්‍රමාණය සීමා කිරීමට භාවිතා කිරීම වඩා හොඳය .


2
ඇත්ත වශයෙන්ම මෙය ලිනක්ස් මත ක්‍රියා නොකරයි (වෙනත් * නික්ස් ගැන ඩන්නෝ). man setrlimit:RLIMIT_RSS Specifies the limit (in pages) of the process's resident set (the number of virtual pages resident in RAM). This limit only has effect in Linux 2.4.x, x < 30, and there only affects calls to madvise(2) specifying MADV_WILLNEED.
පැට්‍රික්

6

මම හිතන්නේ මෙය වඩාත් නිර්මාණාත්මක පිළිතුරක් සඳහා තරඟ වදින පුද්ගලයින් විසින් වැරදි ප්‍රශ්නයක් ඇසීමේ සහ සිහිබුද්ධියෙන් ගිලී යන අවස්ථාවකි. ඔබට අවශ්‍ය වන්නේ OOM තත්වයන් අනුකරණය කිරීමට නම්, ඔබට මතකය පිරවීම අවශ්‍ය නොවේ. අභිරුචි විබෙදන්නෙකු භාවිතා කර නිශ්චිත ප්‍රතිපාදන ගණනකට පසුව එය අසාර්ථක වන්න. මෙම ප්‍රවේශය SQLite සඳහා ප්‍රමාණවත් ලෙස ක්‍රියා කරන බව පෙනේ .


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.