CPU: 8개의 글
JMX를 이용해서 자바 어플리케이션의 상태를 모니터링 한다. 모니터링 하던 중 CPU가 갑자기 튀는 현상이 발생했다. 그래서 원인을 찾아야 하는데.. 어떻게할까? 1. top 으로 java가 CPU를 많이차지하는지 확인 - 대부분의 경우 java겠지만, 혹시나 다른 프로세스가 CPU를 차지하고있지는 않은지 확인한다. java가 아닌 다른 프로세스가 CPU를 많이차지하고 있으면 그 프로세스가 원인이므로 쉽게 끝날 수 있다. 하지만 java가 원인이라면... 어떤 스레드가 차지하는지 분석이 필요하다. 2. java가 많이 차지한다면, top 에서 H(대문자)를 입력해서 스레드 단위로 CPU점유율 확인 $ top - 터미널에서 top을 입력하면 현재 동작중인 스레드와 CPU, Memory 점유율을 확인할 수 ..
CPU 사용률 $ top // 명령을 이용하면 CPU사용률을 볼 수 있다. 아래와 같이 bash가 75.2%의 CPU를 사용하는데 괜찮은 것일까? 가끔 컴퓨터가 버벅거릴때, CPU사용률을 보면 100%가 되는것들이 있다. 그때문에 CPU사용률이 100%가되면 문제가 있는것이라고 생각할 수 있는데, 그렇지 않다. CPU사용률은 특정 시간에 대한 평균값이다. 스레드마다 실행되는 시간이 정해져있고, 시간을 다 소모하게되면 다른 스레드가 돌고, 자기차례가 다시 돌아올때까지 유휴기간을 갖는다. 자신이 CPU사용시간을 받았을때, 사용시간 동안 CPU 를 사용한 퍼센트이기 때문에 높을수록 좋다. 따라서 CPU에 관해서, 성능을 높히기 위한 방법은 짧은 시간 동안 CPU 사용률을 가능한 높히는 것 CPU 사용시간은 두..
운영체제 - 프로세스(Process)란? 프로세스상태,Context Switching 쓰레드(Thread)란 간단히 말해 프로세스 내에서 실행되는 실행 단위이다. 프로세스는 이러한 쓰레드를 한 개 이상으로 나눌 수 있다. 쓰레드는 프로그램 카운터와 스택 포인터 등을 비롯한 쓰레드 실행 환경 정보(Context 정보), 지역 데이터, 스택을 독립적으로 가지면서 코드, 전역 데이터, 힙을 다른 쓰레드와 공유한다. 그림을 보면 프로세스 내에서 쓰레드는 별도의 Stack(+ 스레드 실행 환경 정보, 지역데이터, 레지스터 등)을 할당받고 Code, Data, Heap 영역은 같은 프로세스 내의 다른 쓰레드와 공유한다. 프로세스 하나에 포함된 쓰레드들은 공동의 목적을 달성하려고 병렬로 수행한다. 이러한 쓰레드를 이..
프로세스의 개념 프로세스는 다양한 정의가 있다. 실행 중인 프로그램 비동기적 행위 실행 중인 프로시저 실행 중인 프로시저의 제어 추적 운영체제에 들어 있는 프로세스 제어 블록(PCB) 프로세서에 할당하여 실행할 수 있는 개체 디스패치가 가능한 대상 이 중 가장 일반적인 프로세스 정의는 "실행 중인 프로그램"이다. 프로그램이 실행 중이라는 의미는 디스크에 있던 프로그램을 메모리에 적재하여 운영체제의 제어를 받는 상태가 되었다는 것이다. 이는 자신만의 메모리 영역(주소 공간)이 있음을 의미한다. 프로세스가 실행 중인 프로그램이 되려면 프로세서 점유 시간, 메모리, 파일, 입출력장치 같은 자원이 필요한데, 프로세스를 생성하거나 실행할 때 이 자원을 할당한다. 그리고 프로세스는 현재의 활동 상태를 나타내는 프로..
컴퓨터 시스템은 데이터를 처리하는 물리적인 기계장치인 하드웨어와 어떤 작업을 지시하는 명령어로 작성한 프로그램인 소프트웨어로 구성된다. 운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어이다. 그러므로 운영체제를 이해하려면 먼저 컴퓨터 하드웨어에 대해 아는 것이 중요하다. 이번 포스팅에서는 하드웨어를 하나하나 깊숙히 알아간다기 보다는 어떠한 하드웨어가 있고 해당 하드웨어가 어떻게 구성되며 어떠한 역할을 하는지 정도만 알아보는 포스팅이 될듯하다. 컴퓨터 하드웨어는 크게 프로세서(CPU), 메모리(기억장치,RAM), 주변장치로 구성되고, 이들은 시스템 버스로 연결한다. 1.프로세서(CPU) 프로세서는 컴퓨터 하드웨어에 부착한 모든 장치의 동작을 제어하고 명령을 실행한다. 중앙처리장치(Central Process..
오늘 간단히 다루어볼 내용은 쿠버네티스 리소스(cpu, memory) 할당과 관리에 대한 이야기이다. 리소스 관리 쿠버네티스에서 Pod를 어느 노드에 배포할지 결정하는 것을 스케쥴링이라고 한다. 팟에 대한 스케쥴링시, 노드에 애플리케이션이 동작할 수 있는 충분한자원(CPU, 메모리 등)이 확보되어야 배포가 가능하다. 이때문에 쿠버네티스 manifast 파일에 아주 중요한 설정이 있는데, 그것은 request, limit 에 대한 설정이다. Request&Limit 컨테이너에 적용될 리소스의 양을 정의하는데, request와 limit이라는 설정을 사용한다. request는 컨테이너가 생성될때 최소한 있어야하는 자원 요청이고, limit은 request만큼 할당된 것보다 더 많은 리소스가 필요할때, 해당 ..
참조문서 : https://developers.google.com/web/tools/chrome-devtools/rendering-tools/js-execution 웹어플리케이션 분석할 때 쓰지만, V8_inspector을 이용하여 노드에서도 쓸 수 있다. 1. CPU Profile CPU 사용량을 기록한다. Self Time : 함수의 현재 호출을 완료하는 데 얼마나 걸린 시간 Total Time : 이 함수와 해당 함수가 호출한 모든 함수의 현재 호출을 완료하는 데 걸린 시간 2. Heap Snapshot 클릭시점에서 스냅샷 기록 Shallow Size : array string과 같이 직접적으로 메모리를 점유하고 있는 js 객체들의 크기, 실제 데이터가 있는 영역 Retained Size : GC ..
# CPU 코어 전체 개수 grep processor /proc/cpuinfo | wc -l # 물리 CPU 수grep 'physical id' /proc/cpuinfo | sort -u | wc -l # 물리 CPU 당 물리 코어수grep 'cpu cores' /proc/cpuinfo | tail -1 # HyperThreading 활성화 확인 (siblings이 cpu cores의 2배면 활성화)egrep 'cpu cores|siblings' /proc/cpuinfo | sort -u# 파일시스템 확인dmesg | grep sda4df -T # OS bit 조회getconf LONG_BI # 랜카드 지원속도 확인ethtool eth0 # 오라클버전 확인select banner from v$ver..