VIM 사용하다가 저장시 root 계정이 없다고 뜬다면?

리눅스/MAC 에서

vi /etc/hosts 와 같이 시스템 파일을 건들고, 열심히 수정을 하였습니다. 그런데 만약 sudo 명령어를 잊고 실행시켰다는 것을 알았다면?  다시 작성할까…. 고민하시는 분들을 위한 꿀팁입니다.

:는 명령어 내린다는 것을 다들 알것이고, w 는 저장입니다. 이에 뒤붙여서 !sudo tee % 하면 비밀번호 입력하라고 합니다. 비번입력하면 신기하게 저장됩니다.

:w !sudo tee %

이제 파일 다시 수정하지 마세요.

MAC 에서도 적용되는 내용입니다.

오늘은 여기까지.

sysbench 내 서버의 CPU, RAM, SSD 성능을 알아보자!

안녕하세요. 스타트업하는 개발자 DevKwon 권선우입니다.

간단히 CPU, RAM, HDD(SSD)의 벤치마킹 하는 방법을 알아보겠습니다. 바로 sysbench 명령어를 이용하여 벤치마킹을 해보겠습니다.

SYSBENCH

sysbench 를 이용해보겠습니다.

CPU 벤치 방법

sysbench --test=cpu --cpu-max-prime=20000  --num-threads=2 run   
설치는 centos 는
yum install sysbench
ubuntu는
apt-get install sysbench
간단합니다. 스레드 2개로 벤치마킹한다는 겁니다. 코어가 여러개 있는 서버는 –num-threads 를 CPU 개수만큼(하이퍼스레딩 되면 X2 추가) 해주면 더 정확한 벤치가 이루어 집니다.
싱글스레드 값을 알고싶으시면 –num-threads 를 1로 잡으시면 됩니다.
MAC 또한 가능한데 brew 로 sysbench 를 선택하시고
brew install sysbench
해보시면 벤치마킹 해볼 수 있습니다.
홈브루(brew) 의 사용 방법은
여기를 참조해 주시기 바랍니다.
아래는 mac 에서의 CPU sysbench  명령어입니다.  –max-requests 와 –max-time을 추가한 이유는 brew 로 인스톨한 sysbench 의 버전이 상위 버전이므로(현재 최신 버전 1.0.4) 디폴트 값이 안잡혀서 잡아주었습니다.
sysbench --test=cpu --cpu-max-prime=20000  --num-threads=4 --max-requests=10000 --max-time=100 run

 

sean@localhost:~$ sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run
sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 2

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
 total time: 15.3272s
 total number of events: 10000
 total time taken by event execution: 30.6441
 per-request statistics:
 min: 1.40ms
 avg: 3.06ms
 max: 27.11ms
 approx. 95 percentile: 9.13ms

Threads fairness:
 events (avg/stddev): 5000.0000/0.00
 execution time (avg/stddev): 15.3221/0.00

잠시 기다려 보면 아래와 같은 결과 값이 나옵니다. total time 을 보시면 되고 15.32초가 걸렸습니다. 지금 서버는 cpu 2개인 서버인데, 만약 –num-thread 값을 1로 바꾸면 거의 두배인 30.6초 정도 나오게 되겠습니다.

맥북 프로에서는 8.3267s,, 스마일서브 1core (iwinv) 14.3366s,  2core : 7.3577s 정도 나왔습니다. CPU많으면 개수만큼 성능이 좋네요.

이런식으로 벤치 마킹을 하시면 됩니다.

RAM 성능 측정 방법은

sysbench --test=memory run

RAM  성능 측정하는 지표는 역시 실행시간입니다.

제 맥북 프로에서는 49.2817s, 스마일서브(iwinv) 호스팅 계정은 70.5834s, Azure 2Core instance 는 68.1875s 이였습니다.

102400.00 MiB transferred (2077.77 MiB/sec)  와 같이 초당 전송 속도를 보는 것도 측정방법의 한 방법이겠습니다.

이번엔 SSD(HDD포함) 측정을 해보겠습니다.

mkdir test
cd test
sysbench --test=fileio --file-total-size=1G prepare

sysbench --test=fileio --file-total-size=1G --file-test-mode=rndrw --max-time=60 --max-requests=0 run

sysbench --test=fileio --file-total-size=1G cleanup

먼저 test 디렉토리를 만들고, 거기에서 prepare 명령어로 준비 과정을 거칩니다. (벤치마킹 돌릴 파일 생성)

run 명령어로 벤치마킹을 합니다. 이제 잠시 기다리면 결과가 나옵니다. 이번에는 초당 입/출력 대역폭으로 벤치마크 결과를 판단해보겠습니다.

sean@localhost:~/test$ sysbench --test=fileio --file-total-size=1G --file-test-mode=rndrw --max-time=60 --max-requests=0 run
sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Extra file open flags: 0
128 files, 8Mb each
1Gb total file size
Block size 16Kb
Number of random requests for random IO: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Threads started!
Time limit exceeded, exiting...
Done.

Operations performed: 29400 Read, 19600 Write, 62596 Other = 111596 Total
Read 459.38Mb Written 306.25Mb Total transferred 765.62Mb (12.76Mb/sec)
 816.64 Requests/sec executed

Test execution summary:
 total time: 60.0018s
 total number of events: 49000
 total time taken by event execution: 10.0451
 per-request statistics:
 min: 0.00ms
 avg: 0.21ms
 max: 23.24ms
 approx. 95 percentile: 0.73ms

Threads fairness:
 events (avg/stddev): 49000.0000/0.00
 execution time (avg/stddev): 10.0451/0.00

file-total-size는 RAM 용량이상으로 이상으로 넉넉하게 잡아주시면 더 정확한 결과가 나올 수 있습니다. 저는 대략만 알면 되기에 1G 만 테스트 해보았습니다.

마지막으로 cleanup 명령어로 파일을 제거해 주시면 되겠습니다. rmdir test 로 디렉토리도 제거하시고요.

실행결과는 다음과 같습니다.

맥프로 SSD의 성능이 어마어마했는데요.

HDD :     read, MiB/s:                  270.85    written, MiB/s:               180.57  의 결과가 나왔습니다.
애저의 local SSD 결과도 좋았는데요 무려 151.85Mb/sec (입/출력 평균) 의 결과가 나왔습니다. 애저의 managed ssd는  14.609Mb/sec 에 불과하였습니다.
일반 호스팅(통큰아이)의 SSD 는 23Mb/sec 정도 하였습니다. iwinv도 비슷한 수준입니다.
대략적으로 서버의 벤치마킹은 sysbench 이거 하나면 됩니다.
오늘은 여기까지.

 

 

MacOS에서 홈브루(HomeBrew) 로 패키지 설치하기

홈브루가 왜 필요한가 ?

HomeBrew는 MacOS 에서 패키지를 손쉽게 관리할 수 있게 하기 위하여 만들어졌다.

맥에서 우분투의 apt-get 나 CentOS 의 yum 과 같은 패키지 관리자를 원한다면 홈브루가 그 역할을 대신 해줄 것이다.

맥에서 패키지를 설치할 때 가장 좋은 대안이기 때문에 HomeBrew 를 사용하지 않는다면 복잡한 소스 설치를 통해서 직접 패키지를 설치해야 하는 불편함이 있을 것이기에 거의 필수로 사용하고 있는 대중적인 MacOS용 패키지 매니저 이다.

HomeBrew 의 기본명령어는 brew로 시작하며 brew install package명 과 같이  설치가 가능하다.

그럼 먼저 HomeBrew를 설치해 보겠다.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
위와 같이 터미널에서 입력하면 HomeBrew가 설치된다.
단 주의할 점은 root에서 설치하지 않고 일반 계정에서 설치해야 하며 , 패키지를  설치할 때에도 일반 계정에서 설치하면 된다는 것이다.
https://brew.sh/index_ko.html 에서도 HomeBrew를 설치할 수 있는 방법이 안내되어 있으니 참조하기 바란다.
패키지 설치하기 
brew install package명 과 같이 입력하여 설치하면 된다.
mongodb를 설치한다고 한다면 다음과 같다.
brew install mongodb
패키지 삭제하기
brew unlink package명 으로 삭제가 가능하다.
패키지를 서비스로서 시작하기
mongodb, mysql 등과 같이 서비스로서 구동되는 패키지라면 다음과 같이 구동시킬 수 있다.
이렇게 하면 맥이 구동될 때 항상 띄우게 된다.
brew services start mongo
만약 구동 서비스에 등록하지 않고 이번 한번만 실행하고 싶다면
brew services run mongo
서비스 중지는 다음과 같다.
brew services stop mongo
재가동을 한다면 다음 명령어를 입력한다.
brew services restart mongo

홈브루 업데이트 하기

모든 패키지의 버전 정보를 갱신하는 방법으로 brew update 를 실행한다.

brew update

패키지 업데이트 하기

패키지의 버전을 업그레이드 하기 위해서 brew upgrade [패키지명] 을 사용한다.

brew upgrade mongo

패키지 정보 얻기

패키지의 정보를 얻으려면 brew info [패키지명] 명령어를 입력한다. 버전정보와 여러가지 정보를 얻을 수 있다. 뭔가 패키지를 설치하다가 잘 구동이 안된다면 이 명령어로 현재 설치된 버전과 기타 정보를 얻을 수 있다.

brew info mongo

 

brew info 명령어로 아래와 같이 복수의 버전이 설치되어 있는 것을 확인한다면 버전을 전환할 수도 있다.

/usr/local/Cellar/mongodb/3.4.1 (17 files, 261.5MB)
 Poured from bottle on 2017-02-05 at 20:46:18
/usr/local/Cellar/mongodb/3.4.2 (17 files, 266.5MB) *
 Poured from bottle on 2017-03-12 at 19:11:59

switch 를 이용하여 버전을 전환하는 명령어는 다음과 같다. brew switch [패키지명] [버전]

brew switch mongo 3.4.1

끝나치면서 할말은 필자는 HomeBrew 로 대부분의 패키지 설치가 가능했으며, 별다른 불편함을 느끼지 못하였다.  Macports 라는 대안이 있기는 하지만 이미 대세는 HomeBrew 로 기울은 듯 하다.