본문 바로가기

기술/Linux

리눅스/Ubuntu) Huge page 관련 실험 과정

실험 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. 결과

 


References