이 블로그 검색

2020년 6월 11일 목요일

WSL 1 has no numa support




When I run a linux program that uses c++ numa lib , I get the following error and core dump.

     "request to allocate mask for invalid number: Invalid argument"

But, It works normally on linux installed in virtualbox. 프로그램이 wsl 에서 동작하지 않는 경우를 처음 겪었음.


virtualbox

$ numactl -s
policy: default
preferred node: current
physcpubind: 0 1 2 3
cpubind: 0
nodebind: 0
membind: 0

wsl ubuntu

$ numactl -s
physcpubind: 0 1 2 3 4 5 6 7
No NUMA support available on this system.

2020년 4월 30일 목요일

redis-benchmark 에서의 RPS(requests per second) 의미

redis-benchmark 를 수행했을때 출력되는 requests per second(RPS) 의미를 client 개수와 연관해보면 다음과 같다.

RPS = 전체 요청 명령 수 / client 가 나눠서 모두 처리한 시간  


즉,  다음과 같이 백만건의 set 명령을 client 1 개가 수행하게 실행한 경우

redis-benchmark -d 70 -r 1000000 -n 1000000 -c 1 -t set

client 1 개가 백만번 set 을 수행해서 걸린 시간에 대한 rps 의미이며, 만약 client 2 개로 테스트 했다면

redis-benchmark -d 70 -r 1000000 -n 1000000 -c 2 -t set

client 2 개가 백만번의 set 명령을 나눠 수행하는데 걸린 시간에 대한 rps 의미이다 (이경우, client 별로 명령 처리가 정확하게 등분되지는 않기 때문에 정확하게 client당 50만개씩 수행되는것은 아니다).

즉 요청한 전체 수행 건수를 client 들이 나눠서 모두 처리하는데 걸린 시간으로 rps 를 계산한다 (개인적으로 명확하게 알지 못했던 부분). 


$ redis-benchmark -d 70 -r 1000000 -n 1000000 -c 1 -t set
====== SET ======
  1000000 requests completed in 62.08 seconds
  1 parallel clients
  70 bytes payload
  keep alive: 1

100.00% <= 1 milliseconds
100.00% <= 2 milliseconds
100.00% <= 2 milliseconds
16107.73 requests per second


$ redis-benchmark -d 70 -r 1000000 -n 1000000 -c 2 -t set
====== SET ======
  1000000 requests completed in 26.71 seconds -> 동일한 건수를 client가 나눠서 더 빨리 처리함
  2 parallel clients
  70 bytes payload
  keep alive: 1

100.00% <= 1 milliseconds
100.00% <= 1 milliseconds
37443.37 requests per second -> RPS도 증가
 

초당 처리 해야 할 명령 개수 목표치가 있다면, 이런 테스트를 통해서 client 가 대략 얼마나 필요할지 예상할수 있을 것이다.

참고 : redis-5.0.8/src/redis-benchmark.c