Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
joohanhong
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
JooHan Hong
joohanhong
Commits
83df17e1
Commit
83df17e1
authored
Jun 08, 2022
by
JooHan Hong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
numa, result init
parent
70689ab2
Pipeline
#5729
passed with stages
in 1 minute and 1 second
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
150 additions
and
0 deletions
+150
-0
README.md
OS/TUNING/INFLUXDB/NUMA/RESULT/README.md
+150
-0
No files found.
OS/TUNING/INFLUXDB/NUMA/RESULT/README.md
0 → 100644
View file @
83df17e1
[
![logo
](
https://www.hongsnet.net/images/logo.gif
)
](https://www.hongsnet.net)
# NUMA Configuration STEP 2 (`Result`)
아래와 같이 NUMA preferred 정책을 통해 초도 적용을 하였으나, 기대와 다르게 CPU 사용률이 크게 증가하였다.
[
STEP 1, Issue 바로가기
](
https://gitlab.hongsnet.net/joohan.hong/joohanhong/tree/master/OS/TUNING/INFLUXDB/NUMA/ISSUED
)
따라서 다음의 추가 검토를 통해 튜닝을 수행 한다.
# 튜닝 수행 방향
*
RDBMS의 경우 일반적으로 특정 Core를 사용하도록 고안되었는데, InfluxDB는 왜 다른가?
*
TS(Time Series)DB의 경우 오픈 소스 개발사에서 특별한 가이드가 없는 상태
*
그렇다면, 이제 남은 것은 SMP 구조와 같이 균등한 정책을 통해 수행할 경우 NUMA hit/miss가 어떻게 될 것인가?
# 튜닝 설정
*
[
**STEP 1**
]
numactl 명령을 통한 Application을 실행하기 위해, 다음과 같이 간단한 스크립트를 작성 한다.
```
bash
# cat influxdb_control.sh
#!/bin/bash
if
[[
$1
==
"start"
]]
;
then
numactl
--interleave
=
all /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 --interleave=all /usr/bin/influxd -config /etc/influxdb/influxdb.conf &
추가적으로 현재 NUMA 관련 시스템 환경은 다음과 같다.
*
numad 데몬의 경우 다음과 같이 실행 중인 상태이다.
```
bash
# ps -aef |grep numad |grep -v grep
root 13741 1 0 Jun05 ? 10:15:32 /usr/bin/numad
-K1
-i
15
```
> K 옵션의 경우 기본 값은 0인데, 1로 설정할 경우 Interleaved된 메모리를 유지하는 설정이다. 즉, `Application에 Interleaved 메모리를 분산된 상태로 유지하기 위한 옵션` 이다(man numad 명령).
*
Automatic NUMA Balancing의 경우 해제된 상태 이다.
```
bash
# sysctl -a |grep kernel.numa_balancing
kernel.numa_balancing
=
0
kernel.numa_balancing_scan_delay_ms
=
1000
kernel.numa_balancing_scan_period_max_ms
=
60000
kernel.numa_balancing_scan_period_min_ms
=
1000
kernel.numa_balancing_scan_size_mb
=
256
kernel.numa_balancing_settle_count
=
4
sysctl: reading key
"net.ipv6.conf.all.stable_secret"
sysctl: reading key
"net.ipv6.conf.default.stable_secret"
sysctl: reading key
"net.ipv6.conf.enp216s0f0.stable_secret"
sysctl: reading key
"net.ipv6.conf.enp216s0f1.stable_secret"
sysctl: reading key
"net.ipv6.conf.lo.stable_secret"
```
# 튜닝 수행 결과
*
[
**numastat 명령 결과**
]
```
bash
# numastat
node0 node1
numa_hit 6202902202 6131238910
numa_miss 41512969 22325238
numa_foreign 22325238 41512969
interleave_hit 6102825844 6090896613
local_node 1845654244 4392163282
other_node 4398760927 1761400866
```
> 노드별 메모리가 거의 균등하게 할당되고 있다.
*
[
InfluxDB 메모리 할당 결과
]
```
bash
# numastat -p influxdb
Per-node process memory usage
(
in
MBs
)
for
PID 9893
(
influxd
)
Node 0 Node 1 Total
---------------
---------------
---------------
Huge 0.00 0.00 0.00
Heap 0.00 0.00 0.00
Stack 0.01 0.00 0.02
Private 36515.94 36122.12 72638.06
----------------
---------------
---------------
---------------
Total 36515.95 36122.12 72638.08
```
> Application 프로세스의 메모리 할당도 거의 균등하게 할당되고 있다.
*
[
**노드별 메모리 현황**
]
```
bash
# numastat -m
Per-node system memory usage
(
in
MBs
)
:
Node 0 Node 1 Total
---------------
---------------
---------------
MemTotal 63901.10 64500.59 128401.69
MemFree 14322.89 13495.20 27818.09
MemUsed 49578.21 51005.39 100583.60
Active 17766.52 21687.01 39453.52
Inactive 28945.37 25842.24 54787.61
Active
(
anon
)
2783.99 2793.37 5577.36
Inactive
(
anon
)
4995.22 4856.91 9852.13
Active
(
file
)
14982.52 18893.64 33876.16
Inactive
(
file
)
23950.15 20985.34 44935.48
Unevictable 0.00 0.00 0.00
Mlocked 0.00 0.00 0.00
Dirty 147.17 147.18 294.36
Writeback 0.00 0.00 0.00
FilePages 38942.92 39889.27 78832.19
Mapped 28141.79 27916.30 56058.09
AnonPages 7770.86 7641.40 15412.27
Shmem 8.36 8.88 17.24
KernelStack 5.88 4.22 10.09
PageTables 109.07 107.90 216.97
NFS_Unstable 0.00 0.00 0.00
Bounce 0.00 0.00 0.00
WritebackTmp 0.00 0.00 0.00
Slab 869.02 1501.04 2370.06
SReclaimable 816.19 1437.17 2253.36
SUnreclaim 52.83 63.87 116.70
AnonHugePages 0.00 0.00 0.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
```
*
[
**CPU 사용률 개선 결과 그래프**
]
![
numa_after_cpu
](
./numa_cpu_20220607.png
)
> 평시 Peak 사용률이 완만해진 것을 확인할 수 있다.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment