실험 1
1. FIO 실행 --> free -m 으로 cache 할당량 확인후 메모리가 거의full 될 때 까지 대기
2. XSBench 실행 --> cat /proc/meminfo | grep Anon 으로 Anonymous 메모리 할당량 및 Hugepage 할당량 확인 --> 1초마다 로그 남기기
1. THP 활성화
echo always > /sys/kernel/mm/transparent_hugepage/enabled
echo always > /sys/kernel/mm/transparent_hugepage/defrag
2. FIO 설치
$ apt-get install fio
- 사용법
Random Read :
fio --directory=[마운트한 폴더명] --name [파일 이름] --direct=1 --rw=randread -- bs=4k --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting -- norandommap ·
Random Write :
fio --directory=[마운트한 폴더명] --name [파일 이름] --direct=1 --rw=randwrite -- bs=4k --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting -- norandommap
Random Read Write :
fio --directory=[마운트한 폴더명] --name [파일 이름] --direct=1 --rw=randread -- bs=4k --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting -- norandommap --rwmixwrite 75
- 실행
sudo fio --direct=0 --fsync=0 --size=15G --numjobs=2 --bs=4K --directory=/ --name fio_test_tile --runtime=110
- free -m 으로 cache 할당량 확인후 메모리가 거의full 될 때 까지 대기
- 캐시 비우기
$ sudo su
# password
$ echo 3 > /proc/sys/vm/drop_caches
$ exit
3. XSBench 실행
$ cd XSBench
$ ./openmp-threading/XSBench -t 2 -g 20000 -p 1000000
- -g 20000 = 약 10GB
- -g 30000 = 약 15GB
- -g 40000 = 약 20GB
- 동시에 로그 작성하는 쉘 스크립트 실행시키기
#!/bin/bash
FILE_NAME=hugepage_usage_${1}_${2}GB.out
while true;
do
echo "timestamp: `date +%H:%M:%S`" >> $FILE_NAME;
cat /proc/meminfo | grep Anon >> $FILE_NAME;
echo "============================" >> $FILE_NAME;
sleep 1;
done
$ chmod 777 ./xsbench_hugepage_alloc.sh
$ ./xsbench_hugepage_alloc.sh 1 10
# 첫번째 파라미터: 실험 number ex) 1, 2, 3
# 두번째 파라미터: XSBench에 적용한 메모리 사이즈 ex) 10, 15, 20
4. 결과