일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 펜딩인텐트
- NotificationCompat.Builder
- notification manager
- 안드로이드 알림채널
- android notification 예제
- 알림 인텐트
- setContentIntent
- 안드로이드 알림
- notification channel
- 알림 우선순위
- 버전별 관리
- 안드로이드 알림 예제
- Pending Intent
- notifications
- setDefaults(NotificationCompat.DEFAULT_ALL)
- setPriority(NotificationCompat.PRIORITY_HIGH)
- Today
- Total
공부용 블로그
웹서버 벤치마크에서의 user mode와 kernel mode의 의미 본문
시스템 모니터링 툴인 NmonChart에서 cpu use 를 보면 System 영역과 User 영역으로 구분되어 있는 것을 볼 수 있다.
이 차이는 무엇일까?
차이점 : 시스템 보안을 위해 접근 가능한 영역을 구분
커널 모드(NmonChart에서 system 이라고 하는 부분) : 모든 자원(드라이버, 메모리, CPU 등)에 접근, 명령을 할 수 있다.
유저모드와는 달리 컴퓨터 내부에 모든 짓을 할 수 있으므로 제한적인 접근만을 허용해서 자원을 안전하게 지킨다.
유저 모드 : 유저가 접근할 수 있는 부분을 제한적으로 두고 프로그램의 자원에 함부로 접근하지 못하는 모드
우리는 여기서 코드를 작성하고, 프로세스를 실행하는 등의 행동을 할 수 있다.
간단하게 유저 어플리케이션 코드가 유저모드에서 실행된다고 볼 수 있다.
웹서버를 벤치마크하면서 어떤 웹서버는 CPU 사용량 중 유저부분이 많았고, 또 다른 웹서버는 커널부분이 많았다.
cpu 사용량에서 각각 차지하는 부분이 웹서버의 처리속도와 어떤 관계가 있을까?
추측으로는 kernel 모드의 사용량이 많을수록 웹서버 처리속도는 느려진다고 볼 수 있다.
처리속도가 더 느린 것 : kernel > user
그리고 프레임워크인 netty나 vertx같은 웹서버들은 kernel 영역보다 user 영역의 사용량이 상대적(netty, vertx의 kernel 영역보다)으로 훨씬 더 높았다.
그럼 웹서버의 처리속도가 빠를 것 같지만 kernel의 사용량이 더 많은 nginx 보다 느리게 나왔다. 그 이유는 (어떻게보면 당연하지만) 절대적인 수치로 비교했을 때 nginx의 kernel사용량이 더 적었고, 전체 cpu사용량도 훨씬 낮았다.
즉 netty 에서 kernel 3 / user 23 = 총 26 이었다면
nginx kernel 2.5 / user 2 = 총 4.5 이었다.
그럼 kernel 부분이 user 부분에 비해서 처리속도가 훨씬 느리다는 것만 증명할 수 있다면
이것이 웹서버 처리속도에 미치는 영향 중 하나라는 것을 이해할 수 있다.
참고 http://www.cs.iit.edu/~cs561/cs450/ChilkuriDineshThreads/dinesh's%20files/User%20and%20Kernel%20Level%20Threads.html
'설계 > WebServer' 카테고리의 다른 글
in-memory DB와 디스크기반(traditional) 데이터베이스 (0) | 2018.11.06 |
---|---|
Nginx에 관한 이해 (0) | 2018.10.30 |
Web Server 보충 (0) | 2018.10.30 |
Jetty 설치 (0) | 2018.10.27 |
ubuntu 16.04 $JAVA_HOME 설정 (0) | 2018.10.25 |