1.前言
本文接上篇燒腦神器cpuburn,繼續介紹監控告警的資源場景構造。
如何構造內存使用率過多的場景?
有兩個方法:
1. 自己寫代碼弄個小工具,不斷地去allocate_memory。
2. 用現成的工具:比如馬上要介紹這款內存測試工具:memtester
2.簡介
項目地址:http://pyropus.ca/software/memtester/
簡介:A userspace utility for testing the memory subsystem for faults. It's portable and should compile and work on any 32- or 64-bit Unix-like system. (Yes, even weird, proprietary Unices, and even Mac OS X.) For hardware developers, memtester can be told to test memory starting at a particular physical address as of memtester version 4.1.0.
翻譯:一款在用戶空間下,用於測試內存正確性的實用工具,適用於大多數平台。可以在32位或64位的類Unix操作系統編譯和運行(當然也包括MacOs)。這款工具主要面向硬件開發人員,從4.1.0版本開始,memtester可以指定起始物理內存地址進行測試。
通過介紹可以得知這是一款測試內存正確性的工具,雖說的是適用於硬件工程師,但是我們也可以拿過來構造內存占用的場景。
3.安裝方式
3.1 源碼編譯(推薦)
#1.下載源碼 wget http://pyropus.ca/software/memtester/old-versions/memtester-4.3.0.tar.gz #2. 解壓縮 tar xzvf memtester-4.3.0.tar.gz #3. 編譯 sudo make #4. 安裝 sudo make install
3.2 預編譯好的二進制
memtester存在於各Linux系統的軟件安裝包列表里面,可以自行用對應軟件管理命令查找memtester,如下是相關Linux系統的memtester的package信息:
Solaris/SunOS (sunfreeware.com)
比如,Ubuntu下安裝memtester
sudo apt install -y memtester
4. 幫助
Usage: memtester [-p physaddrbase [-d device]] <mem>[B|K|M|G] [loops]
參數解釋
-p PHYSADDR: 用於指定起始物理內存地址開始測試(16進制的地址格式),一般是硬件工程師用來測試內存映射的設備IO等場景。指定內存地址會覆蓋對應地址的內存數據(這部分內存可能是系統或者其他應用在用的),從而導致crash。
-d 默認使用/dev/mem,我們不用指定
mem: 默認使用M(MB),可以指定B, K, M, or G(分別代表 bytes, kilobytes, megabytes, or gigabytes)
loops:測試次數,默認無限次數執行下去
5. 例子
1)首先查看本機內存
free -g,可以看到有16G

2)分配10g內存用於memtest,循環十次
memtester 10g 10
文中打印了很多測試信息,可以看出來memtester對內存的邏輯操作進行了正確性驗證。

3) 查看實際內存使用情況
輸入: top ,然后按下m字母鍵。
10/16≈62.5%,系統整體的內存使用率達到了70%,memtester使用了約64%左右。

6.其他
退出碼
0:正常退出
x01:內存分配或者鎖定失敗
x02:stuck Address測試失敗
x04:其他測試失敗
最佳實踐
- 在32位系統上運行memtester的話,memtester最多只能申請使用4GB內存。
- 不要指定memtester測試內存大於系統的可用內存,如果超額申請過多內存,會明顯影響其他進程,最終可能會被系統殺掉(OOM killer)(其實這么做根本無法啟動memtester)
- 盡量在root權限下執行memtester,以便讓memtester能申請到指定的內存大小。
博主:測試生財(一個不為996而996的測開碼農)
座右銘:專注測試開發與自動化運維,努力讀書思考寫作,為內卷的人生奠定財務自由。
內容范疇:技術提升,職場雜談,事業發展,閱讀寫作,投資理財,健康人生。
csdn:https://blog.csdn.net/ccgshigao
博客園:https://www.cnblogs.com/qa-freeroad/
51cto:https://blog.51cto.com/14900374
微信公眾號:測試生財(定期分享獨家內容和資源)

