2015-12-09 28 views
-1

我正在運行很少的實驗來查看不同的內存和CPU負載下系統行爲的變化。我想知道是否有一個bash腳本不斷使用高內存,但低CPU?需要不斷使用高內存但低cpu的bash腳本?

+1

內存負載意味着什麼,到底是什麼?被分配但未被主動訪問的內存將被換出;如果你想內存實際上*訪問* ...好,這是可行的,但bash不會是我的第一選擇;使用低級語言您將擁有更多*更多的控制權。 –

+1

這應該在C中完成。使用大型malloc。 – 4ae1e1

+0

你見過這個嗎? http://stackoverflow.com/questions/4964799/write-a-bash-shell-script-that-c​​onsumes-a-constant-amount-of-ram-for-a-user-defi –

回答

1

這是愚蠢的,且不能合理預期提供在任何真實世界的場景中是有用的數據。然而,爲了產生至少與相關聯的存儲器消耗量的一個給定的冪的兩個字節:

build_string() { 
    local pow=$1 
    local dest=$2 
    s=' ' 
    for ((i=0; i<pow; i++)); do 
    s+="$s" 
    done 
    printf -v "$dest" %s "$s" 
} 

build_string 10 kilobyte # build a string of length 1024 
echo "Kilobyte string consumes ${#kilobyte} bytes" 

build_string 20 megabyte # build a string of length 1048576 
echo "Megabyte string consumes ${#megabyte} bytes" 

注意,瞬時,施工期間,至少2倍所需的空間將被要求(對於本地);一個沒有這種行爲的版本將使用namevars(取決於bash 4.3)或eval(取決於作者是否願意做壞事)。

2

爲了模擬CPU /存儲器/ IO負荷的目的,最* NIX系統(Linux包括)提供方便的工具稱爲stress

該工具因OS而異。 On Linux,佔用512MB的RAM具有低的CPU負荷:

stress --vm 1 --vm-bytes 512M --vm-hang 100 

(該調用指:啓動一個存儲器螺紋(--vm 1),分配/釋放的存儲器512MB中的每個線程,睡眠釋放存儲器100秒鐘後)。

+0

一個很好的答案:儘管OP表示他們只對後者感興趣,但這比靜態分配更*更實用。 –

+0

我不會判斷:我看過太多的生產* NIX系統,只安裝了裸機操作系統。在這種情況下,shell/sed/awk幾乎是唯一可用的工具。 – Dummy00001