<em id="hanht"></em>

    <dd id="hanht"></dd>

    <em id="hanht"><acronym id="hanht"></acronym></em>
    
    <button id="hanht"></button>
    <rp id="hanht"><object id="hanht"><blockquote id="hanht"></blockquote></object></rp><em id="hanht"></em>

    首頁 > 學院 > 系統知識 > 正文

    怎樣一條命令,榨干機器的所有內存?

    2022-07-09 12:57:41
    字體:
    來源:轉載
    供稿:網友
    最近在驗證一些機器的內存分配規律的時候,學習到了一些技能,趁著周末有時候寫點東西,跟大家分享一下。
     
    大家可能有遇到類似的場景,想要對機器進行壓測模擬 OOM 的場景,但是無奈機器的規格實在太高,若用代碼去實現,大家可以想象一下如何實現?個人感覺還是有點麻煩的。
     
    那么有沒有好有的辦法,不用寫代碼,用幾個簡單的命令直接就可以向機器申請內存呢?或者更極端點,直接把機器的內存給榨干了。。
     
    若你經常使用 linux,你會發現 df -Th 后,一定會有 tmpfs 類型的文件系統掛載在 /dev/shm 下面,雖然你大概率不會關注到它。
    如果你想用完機器的所有內存,完全可以在 mount 的時候,指定 size 為機器的內存大小,但你要清楚你在做什么,否則執行完 dd ,你的機器可能就掛了。
     
    利用上面這個方法,其實還可以做更多的事情,比如你在機器你有兩個 NUMA Node ,但你只想占用 NUMA Node 0 的內存,那就可以指定 NUMA Node 0 的內存,怎么辦呢?
     
    首先利用 lscpu 找到 NUMA Node 0 上的所有 cpu 核
     
    $ node0_cpus=$(lscpu | grep "NUMA node0" | awk '{print $NF}')
    然后使用 taskset 工具加 -c 參數來指定對應的 cpu 核來執行創建 tmpfs 目錄和 dd  的過程
     
    $ cat > /root/mem_alloc.sh <<EOF  
    #!/bin/bash  
    tmpdir=`mktemp`  
    mount -t tmpfs -o size=1024M tmpfs ${tmpdir}  
    dd if=/dev/zero of=${tmpdir}/block  
    EOF  
    $ taskset -c "${node0_cpus}" sh /root/mem_alloc.sh  
    執行完成后,如果你所占用的內存,沒有超過 NUMA Node 0 的本地內存,那么你使用 numactl 就會發現上面命令都只占用了 NUMA Node0 的內存。

    (編輯:錯新網)

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    一级特黄大片欧美久久久久_一本一道久久综合狠狠老_JLZZ日本人年轻护士_欧美男男作爱VIDEOS可播放
      <em id="hanht"></em>

      <dd id="hanht"></dd>

      <em id="hanht"><acronym id="hanht"></acronym></em>
      
      <button id="hanht"></button>
      <rp id="hanht"><object id="hanht"><blockquote id="hanht"></blockquote></object></rp><em id="hanht"></em>