移至主內容
DarkRanger's Secret Area

主導覽

  • 首頁
  • 關於本站
  • Linux
  • 程式開發
  • N900
  • 譯文
  • 資訊技術辭典

文章分類

  • 影劇
  • 遊戲
  • 筆記
  • 雜文
  • 資訊技術
  • 站務訊息

最新內容

  • How-To:Linux 安裝 DevilutionX
  • 於 2012 年建立的一份音樂播放清單
  • How-To:Linux 安裝 Medal of Honor: Allied Assault
  • Fallout 4 (2015)
  • How-To:Linux 安裝 Blood
  • 《終極動員令》系列早期作品原始碼釋出
  • How-To:Linux 安裝 Doom 3
  • Nausicaä of the Valley of the Wind (1984)
  • Intel 內顯與 Linux 桌面死當問題排解
  • 《哥吉拉 -1.0》心得補遺

記憶體消耗測試腳本

發表日期:星期五, 09/30/2022 - 22:20

故事的起頭是這樣的,話說 DR 手邊有一項任務需要處理大量的表格資料,為此便寫了一支 Python 程式。然而這支程式的資料迭代過程有一項設計缺失,會導致已經處理完並存檔的資料,仍持續累積在記憶體裡,造成程式的記憶體佔用量持續升高。當 DR 隨意地用 htop 查看系統資源時,才赫然發現若按照這個累積速度,恐怕二號機上的 16GB 記憶體會被整個吃光。但當下又不太想讓它重跑,於是就硬著頭皮看著它跑完。果不其然,在整個執行過程中,系統記憶體一度接近耗盡,連 swap 都用上了。

 

程式沒寫好雖然尷尬,然而轉念一想,若寫一支能夠刻意把記憶體吃光的程式,似乎對於某些情境是有意義的,像是用於測試系統高負載情形及設備可靠性等等。於是順手另外再寫了一支腳本程式(mem_consume_test.py),來專門實現記憶體的消耗。這支腳本係針對 Linux 平台設計,對於記憶體使用量的監控是從 /proc/meminfo 中的數值計算而成。

 

由於 DR 希望這支腳本能夠便利地在任一主流的 Linux 發行版上直接執行起來,所以在設計方向上,都是使用還蠻基礎的 Python 模組,應該是不太需要額外安裝套件就能夠執行:

  • chmod +x mem_consume_test.py
  • ./mem_consume_test.py

 

腳本在執行時會先從 Wikimedia Commons 下載一個指定的圖檔,作為記憶體佔用的資料來源。接著為了形塑出接近真實情境的資料操作,而不是反覆複製完全相同的資料,腳本會將圖檔連同持續更新的時間戳記,一併寫入到 JSON 格式中。再將 JSON 累加到資料陣列裡,藉此形成記憶體佔用量持續升高的效果。

 

預設的結束條件,是會在記憶體使用量達 95% 時終止執行。不過有可能在此之前就會先被作業系統關斷了,或者使用者也可以自行以 Ctrl + C 來終止程序。此外程式碼內也有預置一些可變更的額外設定,例如可明確指定資料筆數的上限等等。

 

資訊技術