전자제품을 구매하고 언박싱을 하면 매번 튀어나오는 매뉴얼...

하지만, 우리는 보통 그 매뉴얼을 거들떠 보지도 않는다. 어!? 나만 그런가!? ^^

 

리눅스 서버를 구성하고 종종 확인하는 리소스...

솔직히... 그 의미가 어떤 것인지 경험으로만 파악했지, 정확한 의미는 잘 모른다. 어?! 나만 그런가?! ^^

 

[ Environment ]

- VM : VirtualBox v7.0.6 r155176

- OS : Ubuntu 20.04 LTS

 

VirtualBox

 

 

[ top ]

내 서버가 왠지 힘들어하는 것 같으면 가장 먼저 확인하는 것이 'top' 명령어이다.

> top

 

여기에서 주로 보는 것은 다음의 'load average' 영역일 것이다.

load average

 

'load average'는 시스템의 부하정도를 알려주는 지표인데,

실행중인 프로세스 또는 Disk I/O 등을 위해 대기하고 있는 프로세스의 정도를 알려주는 정보로써

CPU core 1개당 1 이상의 값을 갖는다면 대기해야하는 task가 있다는 의미로 이해하면 된다.

 

그런데, 왜 3개의 값이 보일까?!

1분 / 5분 / 15분 순서로 값을 보여주는데, 이를 통해 부하가 심해지고 있는지 해소되고 있는지 경향을 볼 수 있다.

 

개인 PC라면 가성비로 사용해야하기에 1에 맞춰서 Spec을 확보해도 괜찮겠지만

서비스를 위한 서버라면 아무리 돈이 없어도 평균 0.5 이하로 맞춰야 그나마 성능 저하 없이 사용할 수 있다.

 

일단 여기까지만 알아도 충분하지 않을까!? ^^

 

 

[ core ]

우리가 요즘 사용하는 CPU는 거의 multi-core일 것이다.

어!? 그런데, 생각해보니 Kubernetes에서 POD의 core를 소숫점으로도 줄 수 있는데... 일단 지금은 무시!!! ^^

core

 

실습을 하고 있는 환경은 일단 VirtualBox에서 2 core를 할당했다.

정말 잘 되어있는지 확인해보자.

> cat /proc/cpuinfo

 

스크린샷을 다 찍기에는 너무 길어져서 잘랐는데.... 그냥 심플하게 확인하려면 다음과 같이 하면 된다.

> grep -c processor /proc/cpuinfo

 

2 core가 잘 할당되어 있는 것을 볼 수 있다.

 

다른 명령어로도 확인할 수 있다.

> lscpu

 

 

[ full-load CPU ]

CPU 관련한 부하가 한계치까지 가면 어떻게 되는지 시뮬레이션을 해보자.

 

> nano cpu.py
#!/usr/bin/python

test = 0
while True:
    test = test + 1

 

Terminal 탭을 2개를 열고 진행을 해보자.

> python ./cpu.py

 

> top

 

응?! 그런데, 2 core 인데...

CPU 100%라고 하면, load 값이 2가 되어야 할 것 같은데 ... 1 값으로 수렴하고 있는 것 처럼 보인다.

 

그 이유는!

지금 실행되고 있는 python은 core 1개에서 실행되고 있기 때문이다!

 

그러면... python을 하나 더 실행해보자.

> python ./cpu.py

 

그리고나서 top을 다시 한 번 확인해보면,

> top

 

2 core이기 때문에, 각각 100% 실행이 되고 있으니... 2 값으로 나온다.

 

어!? 그러면 하나 더 실행하면!?

> top

 

밑에 보이는 리스트 형식의 내역을 보면 CPU는 총 200%를 3으로 나눠서 사용하고 있는 것이 보일 것이다.

'load average' 값은 3값으로 수렴하고 있다.

 

 

[ uptime]

'top' 명령어 말고 다른 명령어도 알아보자.

> uptime

 

지속적으로 값을 보여주는 것이 아니라 1회성으로 뿌려주고 끝난다.

 

 

[ /proc/loadavg ]

또 다른 방법으로도 확인해볼 수 있다.

> cat /proc/loadavg

 

 

[ w ]

top 명령어와 uptime 명령어의 중간쯤에 위치하고 있는 것 같은 'w' 명령어도 있다.

> w

 

 

그런데, 'load average'를 발생시키는 요인이 CPU 사용만 있을까!?

답은.... 당연히... 아니다 !!!

 

 

[ full-load Disk I/O ]

디스크에 읽고 쓰는 것도 부하를 야기한다.

 

> nano io.py
#!/usr/bin/python

while True:
    f = open("./test.txt", 'w')
    f.write("TEST")
    f.close()

 

> python ./io.py

 

> top

 

CPU 사용량은 9%를 찍고 있지만 'load average'를 보면 1에 수렴하고 있다.

 

CPU 100%를 찍으면 어떻게 될까?

 

> python ./cpu.py

 

> top

 

'load average'를 보면 2에 수렴하고 있지만 CPU 사용량을 보면 차이가 있다.

 

 

그렇다.

'load average'는 단순하게 Running 중인 프로세스 뿐만 아니라 Disk I/O로 인해 대기타는 것도 같이 바라보고 있다.

 

그러면, 이렇게 부하가 잡히고 있을 때 분석은 어떻게 하면 될까!?

일단은 뭐, top으로 확인 가능한 아래 리스트 목록으로 추적이 가능하다.

 

하지만, CPU 부하가 문제인지 Disk I/O 대기가 문제인지 어떻게 알 수 있을까?

 

 

[ vmstat ]

어떤 상태인지 'vmstat' 명령어를 사용해보자.

> vmstat

 

'vmstat' 명령어는 일단 Virtual Memory Statistics의 약자로써 현재 CPU 및 Memory 사용량을 알 수 있다.

 

지금 여기에서 살펴볼 것은 앞 부분에 있는 "r"과 "b" 부분이다.

 

"r"은 현재 실행하려고 하거나 실행 중인 프로세스의 개수를 알려주는 것이고

"b"는 uninterruptible sleep 상태의 프로세스 개수, 즉 I/O 대기를 하고 있는 프로세스의 개수를 알려준다.

 

중간에 io.py의 실행을 종료하면 어떻게 나오는지를 살펴보자.

> vmstat 1

 

중간에 보면 "b" 부분이 0으로 바뀌는 것을 확인할 수 있다.

 

 

우리 서버가 지금 힘들어하지는 않는지

머리(CPU)가 아픈지 손(I/O)이 바쁜지 파악해서 해결해주도록 하자.

반응형

 

최근 업무나 공부를 하면서 CSV 타입의 파일을 사용하는 경우가 종종있다.

 

단순한 텍스트 형식의 파일이므로 메모장 같은 Viewer를 이용하거나

CLI 환경에서는 `cat` 명령어만으로도 내용을 확인할 수 있기에 편리하긴 하지만...

 

그냥 일반적은 텍스트 파일 처럼 보게 되면

데이터를 살펴보기에 불편하긴 하다.

 

 

1. Download CSV

  - 테스트 해보기 위해 CSV 파일 하나를 다운로드 받아놓자

$ wget https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv

 

 

2. Basic

  - 보통 `cat` 형식으로 해당 파일을 보면 이렇다.

$ cat titanic.csv

 

3. Tidy Viewer (tv)

  - CSV 형식의 파일을 예쁘게 출력해주는 아이가 있다.

    - https://github.com/alexhallam/tv

 

  - Ubuntu 환경을 위해 deb 패키지를 제공해준다.

 

    ① Version Check

      - 현재 사용할 수 있는 버전을 확인해보자

        . https://github.com/alexhallam/tv/releases

 

    ② Download

$ wget https://github.com/alexhallam/tv/releases/download/0.0.21/tidy-viewer_0.0.21_amd64.deb

 

    ③ Install

$ sudo dpkg --install tidy-viewer_0.0.21_amd64.deb

 

    ★ 오류

      - Ubuntu 18.04 환경에서 아래와 같은 설치 오류가 발생했다.

      - 관련 이슈는 아래와 같이 reporting 되어 있다.

        . https://github.com/alexhallam/tv/issues/52

 

      - 일단 깨끗하게 오류난 패키지 설치 과정을 청소하자.

$ sudo dpkg --purge tidy-viewer

 

      - 위 이슈에서 제안한 해결 방법으로 설치를 해보자

$ sudo snap install --edge tidy-viewer

 

    ④ alias

      - 편한 사용을 위해 alias 설정까지 해보자

        . bashrc

$ echo "alias tv='tidy-viewer'" >> ~/.bashrc
$ source ~/.bashrc

        . zshrc

$ echo "alias tv='tidy-viewer'" >> ~/.zshrc
$ source ~/.zshrc

 

4. tv

  - 이제 예쁘게 잘 보이는지 확인해보자

$ tv titanic.csv

 

  - 에휴... 오류다.

 

  - 다음 처럼 하면 잘 된다

$ cat titanic.csv | tv

 

 

어?! 이쁘고 깔끔하다!

 

 

설치할 때 문제가 좀 있었고, 사용할 때에도 좀 불편한 점이 있긴한데... 이쁘다!

 

Ubuntu 20.04에서 해보면 문제 없이 사용할 수도 있을 것 같은데...

20.04 환경까지 켜서 확인해보긴 지금 귀찮아서 ^^

 

 

조금 더 지켜보고 내 기본 사용환경에 포함시키는 방향으로 해봐야겠다 !

 

 

반응형

배포본 인기 순위를 확인할 수 있는 사이트 중에서
그나마 가장 영향력이 큰 distrowatch에서 2011년부터 부동의 1위를 차지하고 있는 Linux Mint 이다.

- [공식 사이트] https://distrowatch.com/
- [소개 포스팅] http://www.whatwant.com/704

(최근에 Arch 기반의 Manjaro가 인기가 급상승하고 있지만 Ubuntu 기반의 Mint를 이기긴 힘들거다 ^^)


'2018년 2월 3일' 기준으로 다운로드 받을 수 있는 내역은 아래와 같다.



그런데, 위 이미지에서 메뉴를 살펴보면 "LMDE 2"라는 항목이 보일 것이다.

기본적으로 Linux Mint는 Ubuntu를 base로 하지만,
Debian을 base로 하고 있는 배포판으로 "LMDE 2"라는 이름으로 제공해주고 있다.

Mint는 Ubuntu의 패키지를 그대로 사용할 수 있다는 장점이 있는 반면
Ubuntu와 마찬가지로 버전이 바뀔 때 재설치 수준의 대대적인 빅뱅 업그레이드(?)를 수행해야 한다.
(상위 버전으로 올릴 수는 있지만 솔직히 서비스를 하고 있는 서버에서 상당히 부담스러운 작업이다)

반면 LMDE의 경우에는 Debian 패키지를 사용하고, 말 그대로의 Rolling Release를 하게 되므로
지원기간 만료 걱정없이 작은 패키지 업그레이드 수준으로 꾸준히(?) 사용할 수 있다는 장점이 있다.




일단 Ubuntu에 중독되어 있는 필자이기에..... Linux Mint를 선택하도록 해보겠다.
그런데, 그냥 Ubuntu 쓰면 되는데 왜 Mint가 인기일까?





▶ VirtualBox에 Linux Mint 설치 時 이슈

- 증상 : Linux Mint 18.3 다운로드 후 VirtualBox에 설치하고자 하였으나 화면이 정상 출력이 안됨!
- 환경 : Windows7 - VirtualBox Version 5.2.6
- 해결 : 디스플레이 옵션에 3D를 켰더니 해결이 되었다. 이유는 모르겠음!


▶ 한글 지원

- 예전에는 한글 지원이 부족했다고 하는데... 최근에는 지원 잘된다.





▶ VirtualBox Guest Additions 설치

- 제대로 사용하기 위해선 Guest Additions를 설치해야 한다.



▶ Update

- 그냥 Ubuntu 사용하듯이 하면 된다. "sudo apt-get update / upgrade" 모두 잘 된다.



▶ 메뉴

- Windows의 시작메뉴와 비슷한 구성이다.



설치하고 이것 저것 해보는데...


내가 느낀 점은.... 음... 예쁜 우분투다!


그렇다고해서 우분투 짝퉁이 아니라....

우분투를 사용하는 분이라면 Linux Mint로 넘어가는 것을 고려할 가치가 있다는 말이다.



★ "sudo apt-get update"를 실행할 때에 해시 값이 틀리다고 나오면,
     저장소를 kr 쪽으로 변경하고 해보면 해결이 된다.


반응형

할아버지가 된 고물 맥미니를 현역으로 복귀시키기 위해 고군분투를 하고 있다.

우선은 Ubuntu를 사용하다가 너무 느려서 Xubuntu를 선택해봤는데,
직접 체감해본 성능으로 보면 Xubuntu를 선택한 것은 탁월한 결정이었다.

하지만, 그래도 계속 욕심이 생기는 것을 보면 어쩔수 없이 내 안에 Geek 기질이 내포되어 있나보다.


우선 저성능 환경에서 가장 추천하는 배포판은 Xubuntu 였다.
그러나 Xubuntu 역시 최신 버전은 조금 무거워진 감이 없지않아 있기 때문에
더욱 가벼운 배포판으로 추천받는 것은 "CrunchBang Linux"라는 것이다.

     - http://crunchbanglinux.org/

처음에는 Ubuntu 기반으로 만들어졌지만, 최근에는 Debian 기반으로 만들어지고 있다.


아직 체험해보기 전이지만,
체험기를 보면 정말 저성능의 환경에서도 원활한 성능을 보여주고 있다.



그래서 할아버지 맥미니에 "CrunchBang Linux"를 설치해보려 했지만,
안타깝게도 CrunchBang 역시 Intel 기반에 대해서만 배포판을 제공하고 있다. (32bit & 64bit)



정말 안타까운 현실이다.



그래서 이번에는 접근 방법을 달리해보았다.
PowerPC를 지원하는 Linux 배포판을 찾아보고 그 중에서 쓸만한 것을 고르는 방향으로...

     - http://penguinppc.org/

위 사이트를 보면 PowerPC를 지원하는 배포판을 소개해주고 있다.
하지만, 쓸만한 정보는 없고 최근에는 Fedora 릴리스 소식만 적혀있다.

다음으로 찾은 사이트는 아래와 같다.

     - http://mac.linux.be/content/apple-powerpc-wiki

여기에서 소개된 패키지들을 보면, 그나마 Arch Linux가 쓸만한 것으로 보이는데
안타깝게도 기본적으로 x86 기반의 배포판이며, PowerPC를 위한 ArchLinuxPPC 배포판이 있었지만 지금은 없다.


MintPPC, Yellow Dog 등의 몇 가지 배포판을 더 찾기는 했지만...


결국 쓸만한 배포판을 새로 찾지는 못했다.



지금 현재 할아버지 미니맥에 설치할만한 Linux 배포판은 Xubuntu 밖에 없다는 결론~
다음에 고조할아버지뻘 되는 노트북에 CrunchBang은 한 번 설치해봐야겠다.

반응형

'OS > Ubuntu' 카테고리의 다른 글

sudo 패스워드 안물어보기  (2) 2012.12.22
Ubuntu 터미널 폰트 변경  (0) 2012.09.15
Ubuntu 원격접속 (xrdp, vnc)  (3) 2012.08.30
Ubuntu - sudoers visudo  (3) 2012.08.18
우분츄 - 세계최초! 학원 우분투 러브코메디  (0) 2012.08.15

+ Recent posts