Commit 33d1259e authored by JooHan Hong's avatar JooHan Hong

numa issued init

parent b615a9fd
Pipeline #5727 passed with stages
in 1 minute and 6 seconds
[![logo](https://www.hongsnet.net/images/logo.gif)](https://www.hongsnet.net)
# NUMA Configuration STEP 1 (`Issued`)
현재 다음과 같이 특정 Node로의 **hit** 및 반대 노드의 **miss 상승**이 같이 관찰되고 있는 상태 이다.
```bash
# numastat
node0 node1
numa_hit 1415818052 4129837140
numa_miss 300383808 433699
numa_foreign 433699 300383808
interleave_hit 33473 32804
local_node 1415817519 4129800022
other_node 300384341 470817
```
또한 Application(InfluxDB)의 메모리 점유 상태도 위의 numastat 결과와 동일하다.
```bash
# numastat -p influxdb
Per-node process memory usage (in MBs) for PID 4009 (influxd)
Node 0 Node 1 Total
--------------- --------------- ---------------
Huge 0.00 0.00 0.00
Heap 0.00 0.00 0.00
Stack 0.00 0.01 0.02
Private 19536.82 37865.47 57402.29
---------------- --------------- --------------- ---------------
Total 19536.82 37865.48 57402.30
```
> Node 1에서 더 많은 메모리가 할당된 것을 확인할 수 있다. 다만, `Total 사용량이 1 개의 Node의 전체 용량(64GB)를 사용하지 않고 있다`.
# 튜닝 수행 방향
* 특정 Node에 더 많은 Hit가 관찰되고 있으므로, 이를 **해당 Node가 모두 충분히 사용할 수 있도록 진행** 한다.
* **preferred=1 옵션**을 numactl 명령을 통해 해당 프로세스를 실행한다.
* preferred 옵션을 사용할 경우 **해당 노드에서 모든 메모리를 할당하게되면, 다른 노드에서 메모리를 할당하게 된다**.
즉, 다음과 같이 확인할 수 있다.
```bash
# numastat -m
Per-node system memory usage (in MBs):
Node 0 Node 1 Total
--------------- --------------- ---------------
MemTotal 63916.73 64484.96 128401.69
MemFree 33904.61 5847.62 39752.23 <= Free
MemUsed 30012.12 58637.34 88649.46 <= Used
Active 5848.20 5308.77 11156.98
Inactive 21740.37 50359.28 72099.65
Active(anon) 5152.93 2261.04 7413.96
Inactive(anon) 7448.73 9321.95 16770.68
Active(file) 695.27 3047.74 3743.01
Inactive(file) 14291.64 41037.33 55328.96
Unevictable 0.00 0.00 0.00
Mlocked 0.00 0.00 0.00
Dirty 77.37 264.01 341.38
Writeback 0.00 0.00 0.00
FilePages 14993.80 44102.23 59096.03
Mapped 7917.09 27702.21 35619.30
AnonPages 12594.88 11565.86 24160.74
Shmem 6.74 17.01 23.75
KernelStack 5.72 4.41 10.12
PageTables 76.91 77.98 154.89
NFS_Unstable 0.00 0.00 0.00
Bounce 0.00 0.00 0.00
WritebackTmp 0.00 0.00 0.00
Slab 523.57 952.99 1476.57
SReclaimable 468.23 894.43 1362.66
SUnreclaim 55.34 58.56 113.91
AnonHugePages 4788.00 916.00 5704.00
HugePages_Total 0.00 0.00 0.00
HugePages_Free 0.00 0.00 0.00
HugePages_Surp 0.00 0.00 0.00
```
# 튜닝 설정
* [ **STEP 1** ] numactl 명령을 통한 Application을 실행하기 위해, 다음과 같이 간단한 스크립트를 작성 한다.
```bash
# cat influxdb_control.sh
#!/bin/bash
if [[ $1 == "start" ]]; then
numactl --preferred=1 /usr/bin/influxd -config /etc/influxdb/influxdb.conf &
PID=$!
echo $PID > /var/lib/influxdb/influxdb.pid
elif [[ $1 == "stop" ]]; then
PID=`cat /var/lib/influxdb/influxdb.pid`
for var in {1..3}
do
kill -9 $PID
done
rm -rf /var/lib/influxdb/influxdb.pid
else
echo
echo "Requirement Args start | stop "
echo
fi
```
> 핵심 : numactl --preferred=1 /usr/bin/influxd -config /etc/influxdb/influxdb.conf &
* [ **STEP 2** ] 위 스크립트를 influxdb 사용자로 전환한 후 실행 한다.
```bash
# su - influxdb
$ ./influxdb_control.sh start
```
# 튜닝 수행 결과
> 적용 후 numa_miss가 더 많이 발생되었으며, CPU 사용률도 적용 전보다 더 높아진 상태가 되었기 때문에 서비스에 영향이 발생된 상태 이다.
```bash
# numastat
node0 node1
numa_hit 42020017845 70745395521
numa_miss 20317875178 37019342
numa_foreign 37019342 20317875178
interleave_hit 32940 33335
local_node 43138729467 70741680969
other_node 19199163556 40733894
```
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment