今天用C語言實現一個Memory負載的壓力測試程序.
#include <stdio.h> #include <stdlib.h> #include <string.h> #define PAGE_SZ (1<<12) int main() { int i; int gb = 1; //以GB爲單位分配內存大小 for (i = 0; i < ((unsigned long)gb<<30)/PAGE_SZ ; ++i) { void *m = malloc(PAGE_SZ); if (!m) break; memset(m, 0, 1); } printf("allocated %lu MB\n", ((unsigned long)i*PAGE_SZ)>>20); getchar(); return 0; }
系統當前的內存大小爲1.2G.
查看當前系統內存的動態變化狀態,1.2G大約使用了148M左右.
編譯程序後執行再觀察,程序中允許分配的內存爲1GBi=1024MBi,發現30s內CPU和內存的負載均達到了最大,監控中看到內存佔用了1.1G,約1.2G的91.8%.
這個方法在模擬內存負載時,做壓力測試還是比較有用處的,所以分享一下.