반응형

 

프로세스 스케줄러

1. 프로세스를 작동시키는 커널의 서브시스템

2. 어떤 프로세스를 얼마나 오랫동안 실행할 것인지를 결정

3. 실행중인 시스템 프로세스에 프로세서(CPU) 동작시간이란 자원 할당

 

스케줄러

1. 리눅스 같은 멀티태스킹 운영체제의 기본요소

2. 스케줄러의 최대 사용률을 끌어내며

3. 사용자에게 여러개의 프로세스가 동시에 실행되는 느낌을 줌

 

스케줄러의 원리

1. 프로세서 작동시간을 최대한 활용할 수 있는 실행 가능한 프로세스가 있다면, 어떤 프로세스라도 실행하고 있어야 한다.

2. 시스템의 프로세서 개수보다 실행가능한 프로세스의 개수가 많은 경우라면 특정 순간에 일부 프로세스는 실행 중이 아니며 대기하게 된다.

 

프로세스 우선순위

1. 스케줄링 알고리즘의 일반적인 형태는 우선순위 기반의 스케줄링이다

2. 목표는 가치와 필요에 따라 프로세스의 순위를 매겨 프로세서 시간을 할당해야 한다.

 

리눅스 커널의 두가지 우선순위 단위

1. 나이스값 (-20 ~ +19, 기본값 : 0) : 클 수록 우선순위가 낮다.

2. 실시간 우선순위 (0 ~ 09) : 클수록 우선순위가 높다

-> 실시간 우선순위값은 나이스값과 별도의 값이다

 

타임슬라이스 : 선점되기 전까지 작업을 얼마나 더 실행할 수 있는지 나타내는 값이다

1. 너무 길게 잡으면 시스템의 대화형 성능이 떨어지고 실제 App이 시스템에서 실행되고 있다는 것을 느끼기 어렵다

2. 너무 짧게 잡으면 타임슬라이를 소진한 프로세스를 다음 프로세스로 전환하는데 빈번하게 시스템 시간을 사용하게 되므로 프로세스 전환에 프로세스 시간을 소비한다.

 

※ 리눅스의 CFS스케줄러는 타임슬라이스 값을 할당하지 않고, 프로세스별 프로세서 할당 비율을 지정하는 방법을 사용한다

→ 리눅스에서 프로세스에 할당되는 프로세스 시간은 시스템의 부하에 따른 함수로 결정되고 이는 나이스값의 영향을 받는다

 

※ 리눅스 스케줄링 알고리즘

스케줄러 클래스

1. 리눅스 스케줄러는 모듈화돼어 있으며 여러유형의 프로세스를 각기 다른 알고리즘을 통해 스캐줄링이 가능하며 모듈화된 형태를 스케줄러 클래스라고 한다.

2. 스케줄러 클래스를 이용해 교체 가능한 여러 알고리즘을 동시에 사용하면서 클래스별로 독자적인 방식으로 프로세스를 스케줄링이 가능

3. kernel/sched.c 에 정의된 기본 스케줄러 코드는 각 스케줄러 클래스를 우선순위에 따라 차례대로 실행

4. 실행가능한 프로세스가 있는 가장 우선순위가 높은 스케줄러가 다음에 실행할 프로세스를 선택

5. 완전 공정 스케줄러(CFS)는  SCHED_NORMAL로 정의된 리눅스의 일반 프로세스용 스케줄러 클래스

 

유닉스 시스템의 프로세스 스케줄링

 증요한 2가지의 개념 : 프로세스 우선순위타임슬라이스

 타임 슬라이스는 프로세스가 얼마나 오랫동안 실행되는가이고 높은 우선순위 프로세스는 더 자주 실행되고 더 긴 타임슬라이스 값을 할당 받는다.

→ 이 시스템의 방법론적인 문제발생

 

1. 작업전환의 최적화 문제 발생

2. 우선순위(나이스 값)가 타임슬라이스와 묶이는 것과 나이스 값의 상대적인 차이 발생

3. 나이스값에 따라 타임슬라이스를 할당 하려면 타임슬라이스의 절대값을 할댕해야 됨

4. 우선순위 기반 스케줄러가 대화형작업을 최적화 하고자 할 경우 프로세스 깨우기 처리와 관련된 문제 발생

반응형
반응형

반셀프 인테리어에서 가장 중요한 부분은 업체선정 입니다.

 

인테리어 샵에서 토탈로 진행할 때는 굳이 이런 부분을 신경쓸 필요가 없습니다.

 

그렇지만, 반셀프 인테리어를 진행할 때 업체선정이 가장 중요하고 어려운 일입니다. 어찌되었던 인테리어도 사람이 하는것이기 때문에 가장 신경써서 해야 되고, 한번 업체가 선정하게 되면 변경하기 어렵기 때문입니다.

 

그렇다면 아무런 업계의 동향도 모르고 인맥도 없는 저같은 일반인 들은 어떻게 해야 될까요 ??? 

 

이번에는 그 부분에 대해서 알아보고자 합니다.

 

1. 프랜차이즈 (대기업) 상품 선택

아니... 왜 반셀프 인테리어를 말하면서 프랜차이즈 상품을 이야기하느냐 ...

 

바로 반셀프 인테리어이기 때문입니다. 토탈 인테리어도 그렇고 반셀프에서도 가장 중요한 부분은 시공 이 후 하자보수 (A/S) 입니다. 장인정신이 있고 기술이 좋은 개인사업자 같은 경우 문제는 없겠지만, 그렇지 않은 경우는 시공 이 후 많은 문제가 발생하게 됩니다. 

 

그럴 경우 프랜차이즈 상품으로 인터넷 이나 홈쇼핑을 통해 구매하게 되면 저렴한 가격에 문제 없이 시공이 가능하고 시시공이후 하자보수에서도 무리없이 진행이 가능합니다. 

예시 / 한샘 싱크대 상품

일단 싱크대를 예로 들면 한샘, 리바트 등 업체에서 진행할 수 있습니다. 이럴 경우 공인된 품질의 제품을 무리없이 시공이 될 수 있으며 사용하다 일부 부품이 고장 나더라도 문제 없이 교체 할 수 가 있죠. 또하나 추가로 말씀드리면 싱크대 같은 경우 이벤트를 통해 전기 쿡탑이나 식기세척기를 행사 상품으로 얻을 수도 있으니 참고하시기 바랍니다.

 

또한 대기업 프랜차이즈를 이용해서 시공할 수 있는 부분은 싱크대(한샘/리바트) , 화장실,(대림/이누바스/한샘),  샷시(KCC/LG), 도배/마루(하우스텝), 문/문틀(도어웍스) 등이 있습니다.

 

특히 도배/마루 같은 경우에는 하우스텝이라는 업체를 통해 진행 할 수 있습니다.

한번 검색 해보시면 좋을거 같습니다.

 

2. 네이버 카페

네이버 카페에서 반셀프 인테리어를 할 때 가장 중요하게 들어가서 봐야 될 부분 있습니다.

 

하나는 박목수 인테리어 , 또 다른 하나는 인기통 입니다. 

 

모든 부분을 프랜차이즈를 통해서 진행할 수는 없습니다. 특히 철거공사, 전기공사 같은 경우에는 개인사업자에게 진행해야 될 경우가 반드시 존재합니다. 이럴 경우 박목수나 인기통을 통해서 진행해야 됩니다. 

 

먼저 박목수 인테리어에 대해 소개하면, 박목수 인테리어 같은 경우 토탈 인테리어 사장님들이 주체가 되서 진행이 되게 됩니다. 그렇지만 기존 인테리어 업체와는 다르게 별건에 대해서도 시공이 가능하게 됩니다. 그렇기 때문에 내가 인테리어샵에서 진행하고난 다음 필요한 부분에 대해서 부분 시공을 견적해서 시공이 가능합니다.

 

인기통에 대해 설명드리면 박목수 인테리어 보다 조금 더 하드코어하다고 보면 되는데요. 실제로 기술자 분들이 카페에 소개글을 올리고 직접 연락해서 시공을 의뢰하는 방법이라고 보시면 됩니다. 실제로 인테리어 사장님들이 인기통에서 사람들을 일당으로 고용해서 직접 시공을 한다고 보시면 됩니다. 이럴 경우 항상 신경써야 되시는 부분이 실제로 시공한 사진이 있는 경우 카페를 통해 검색해 보시고 충분한 커뮤니케이션을 통해 작업 범위를 잘 정하는 과정이 필요합니다.

 

3. 직접 시공 (셀프 인테리어)

직접 시공은 반셀프 인테리어에서 가장 중요한 부분입니다. 모든 부분을 업체에서 맡겨서 하면 사실 토탈 인테리어샵에서 맡겨서 하는것이 좋습니다. 제가 앞에서도 말씀드렸듯이 반셀프 인테리어의 가장 큰 목적은 가성비와 디자인 입니다. 다지인은 대기업 프랜차이즈 제품과 기술자 분들을 통해 시공했다면 가성비를 올리기 위해 직접 시공을 해야 되는 부분이 있습니다.

 

직접 시공을 하는 범위를 잘 정해야 추가로 비용이 들지 않기 때문에 이 부분에 결정이 제일 중요하고 내가 갖고 있는 기술과 능력을 잘 생각해서 결정해야 됩니다. 특히, 기술은 별로 필요하지 않고 단순 노동으로 할 수 있는 일은 직접하는게 어떨까 생각해 봅니다.

 

반응형
반응형

이번에는 반셀프 인테리어의 첫단계 계획 및 설계하는 과정에 대해서 이야기 해보고자 합니다.

 

저의 집은 32평의 아래와 같은 구조입니다.

아파트 평면도

흔히 보이는 90년대 후반에 지어진 3bay에서 2.5bay로 보이는 계단형 아파트입니다. 

 

먼저 반셀프인테리어를 하기 전에 가장 먼저 해야 될 일은 

공사의 범위를 설정

하는 일입니다.

 

 

반셀프 인터레어의 계획을 잡을 때 공사의 범위를 정하지 않으면 시작에서 부터 산으로 갈수 있고 잘못하면 시작도 하기전에 너무 많이 지칠수 있습니다. 또한 공사의 범위를 정하지 않게 되면 일정을 잡는데도 많이 문제가 발생할 수 있게죠. 그렇다면 과연 어떻게 공사의 범위를 설정해야 좋을까요. 

 

너무 원론적인 이야기이겠지만 공사범위를 정하는 가장 좋은 방법은 공간단위로 먼저 리스트업을 하고 공정단위로 묶는 작업이 필요합니다.

 

처음부터 너무 큰 산을 보게 되면 어디서부터 손을 대야 될지 모르고 반셀프 인테리어 특성상 한번 시작되면 공사를 추가하게 되면 비용이나 시간에서 많은 낭비가 발생하게 됩니다. 그래서 이런 부분의 작업이 필요합니다. 

 

먼저 저같은 경우 공간단위로 공사의 범위를 처음에는

 

공통

  • 면 LED 교체
  • 방문 교체
  • 실크 도배
  • 기존 온돌 마루 위에 데크타일 덧방 
  • 기존 갈매기 몰딩을 평몰등이로 교체

거실

  • 천장 등박스 교체 
  • 돌출 아트월 설치 
  • 확장된 베란다 문 터닝도어 교체 
  • 추가 전등 설치

방 

  • 추가콘센트 설치

주방

  • 싱크대 교체 
  • 콘센트 이전
  • 전기 쿡탑을 위한 추가 차단기 설치 
  • 보일러 분배기 교체

화장실

  • 타일포함한 올철거 
  • 각종 집기류 및 욕조 설치

현관 및 베란다

  • 타일 시공
  • 붙박이장 
  • 중문

이렇게 공간 별로 시공 범위에 대해 정리를 했습니다. 일단 이렇게 정리하는 이유는 이렇게 작업을 먼저 해야 각 공간 단위로 디테일하게 필요한 부분과 불필요한 부분을 정리할 수 있고 이렇게 해야지 내가 바라는 정확한 요구사항을 정리 할 수가 있습니다. 사실 인테리어 토탈샵에 가게되면 대부분 상담을 진행할 때 이런과정을 거쳐서 들어가게 됩니다. 

 

제가 추천드리고 싶은 것은 직접 인테리어 샵에서 견적 및 상담을 받아보고 가능하다면 현장방문도 하는게 좋을거 같습니다. 그래야지 제가 보지 못한 부분을 봐 줄 수도 있겠죠. 

 

 

그럼 ... 이 다음으로 해야 될 부분은 공정 부분으로 다시 재정리를 해야 됩니다. 이래야 되는 이유는 간단합니다. 반셀프 인테리어에서 가장 중요한 부분은 공정별 기술자분들과 컨텍한 후 작업을 진행하게 되는데 대부분이 일당을 기준으로 진행이 됩니다. 이 부분을 제대로 하지 못하게 되면 낭비되는 금액이 상당하게 되겠죠. 

 

그럼 정리를 해보도록 하겠습니다. 

크게 공정은 철거, 목공, 싱크대, 전기, 설비, 타일, 도기, 도배, 마루/장판/데크타일 이렇게 나눌수 있습니다. 그럼 위에 내용을 기준으로  다시 한번 정리를 해보겠습니다.

 

철거 

  • 화장실 철거
  • 싱크대 철거
  • 문 & 문틀 철거 
  • 기타 부속품 철거 

전기

  • 콘센트 추가설치
  • 전기 스위치 이동설치 
  • 랜 선시공 
  • 전등 교체 
  • 전기 쿡탑용 차단기 설치

설비

  • 보일러 분배기 교체 

목공

  • 몰딩 및 걸레받이 교체
  • 문틀 / 문짝 교체
  • 거실 천장 등박스 평탄화
  • 터닝도어 설치
  • 현관 붙박이장
  • 주방 키큰장
  • 현관 중문

싱크대 : 싱크대 시공

 

도배  : 실크도배 시공

 

바닥재 : 데코타일 시공

 

타일 : 현관 / 베란다 / 주방 / 화장실 

 

도기 :  세면대 / 양변기 / 샤워기 / 욕조 / 화장실 천장

 

이렇게 시공 단위별로 나누게 되면 일정 및 시공업자를 선정하는데에 많은 도움이 됩니다. 

특히 제 경험상 이렇게 나누어야지 시공일자 및 업체간의 동선을 정하는데 효율적입니다.

공사기간을 무한정 늘리기 어려운 상황에서 불가피하게 2개의 시공업자가 들어와야 될 경우가 있는데 공간별로 / 시공별로 구분을 해놓으면 업체의 중복되는 상황을 잘 조절할 수 있겠죠

 

그리고 반드시 알야될 부분은 공정과 공정사이의 조절 및 소통입니다. 이 부분은 제가 별도로 기재를 할 계획이지만 간략하게 설명을 하면 공정과 공정사이에서 불가피하게 다툼이 일어날수 도 있고 이에 따라 추가비용이 들어갈 수도 있습니다. 이럴 경우 시공업자 사이의 소통을 원할하게 하도록 해야 되고 또 필요하다면 제가 직접해야 되는 경우도 있습니다. 

 

이런 경우에 대한 시뮬레이션을 설계 및 준비단계에서 충분히 해두셔야 실패 없는 반셀프 인테리어를 할 수 있습니다.

 

 

 

반응형
반응형

그동안 미뤄두었던 내 집 꾸미기 반셀프 인테리어의 과정에 대해서 소개하고 정리하는 시간을 가져보고자 합니다. 

 

공사기간은 4월 말부터 5월 초까지 진행되었고 참 많은 우여곡절과 힘든 과정을 통해서 아내와 저는 소기의 목적을 달성했다고 생각합니다.

 

저는 경기도 화성에서 신혼집을 구해서 도배, 장판만하고 살다가 ㅠㅠ 12년도부터 다니던 삼성전자를 퇴사하고 퇴직금과 보너스로 받은 돈을 포함 그동안 모아놓은 모든 자금으로 서울 송파구 32평 아파트를 장만하고 2년 후에 입주하게 되었습니다. 

 

물론 이 과정도 순탄치는 않았습니다만, 이 과정은 추후에 올리기로 하고 ...

 

반셀프 인테리어와 관련된 연제를 시작하기 앞서 도대체 왜??? 시작하게 되었는지 천천히 적어보고자 합니다.

우선... 

 

크게 3가지 이유를 꼽을 수 있는데 먼저는 자금이었습니다.

 

인테리어를 계획하고 준비하시는 많은 분들께서도 이 부분에 있어서 많은 고민이 있으실 거 같습니다. 만만치 않은 집값에 큰 금액의 대출을 받아서 시작하는 시점에서 무리하게 추가로 대출을 받아 토털 인테리어 샵에서 진행한다는 것은 여러 측면에서 무리가 될 수 도 있습니다.

 

다음은 품질 (선택&집중)입니다

 

물론 이 부분은 오롯이 저의 개인적인 생각입니다. 충분치 못한 금액으로 토털 인테리어 샵에 갔을 때 흔히 접하게 되는 딜레마는 자제의 퀄리티 입니다. 사람마다 집에서 있어서 중요하게 생각하는 만큼 나는 거실에 혹은 주방에 ... 아니면 화장실에 투자를 하고 나머지는 현재 있는 부분을 최대한 살리거나 혹은 최대한 저렴한 부분으로 하는 것을 원하게 됩니다. (물론... 내가 충분한 자금력이 있다면 고민할 부분도 안되죠)

 

하지만 인테리어 사장님들은 견적이 충분치 못할 경우 (이 부분은 제 경험입니다) 전체적인 품질을 낮춰서 평균점수를 맞출려고 합니다. 물론 이것은  100% 맞다고 볼 수는 없지만, 제가 들었던 이야기는 그렇게 해야 최대한 클레임을 적게 받는다고 하셨습니다.

 

예를 들면 수학 영어를 시험 보는데 한명은 수학은 100점 영어는 50점인 반면 다른 한명은 둘다 75점인 경우 이겠죠 ... 

 

마지막으로 디자인 입니다.

 

보통 ... 인테리어 토탈샵에 의뢰할 경우 보통 사장님의 경우 특정 분야의 전문가인 경우가 대부분입니다. 다시말해 한 분야의 전문가일 뿐 전체 공정을 토털 마스터는 아닙니다. 물론 다양한 경험을 갖고 각 공정의 이해는 일반인 보다는 월등하게 좋을것 입니다. 그렇다 하더라도 사장님이 타일도 시공하고 도배도 하고 다 하는 경우는 없겠죠. 그렇기 때문에 내가 원하는 디자인적인 요소나 실용적인 요소를 둘다 얻기가 힘들다는 것입니다. 

 

또한 경우에 따라서는 팀으로 움직이기 때문에 다양한 브랜드의 제품을 넣는것이 힘든 경우도 있겠죠 ... (물론... 이 부분에 있어서도 예산만 충분하면 가능하겠죠)

 

요약하면 적절한 예산을 통해 내가 원하는 최대한의 결과물을 보기 위한 과정을 반셀프 인테리어라고 할수 있습니다.

그럼 ... 단점은 ??? 그러기 위해서는 반셀프 인테리어의 개념이 필요한데

 

반셀프 인테리어를 정의 하자면,

 

내가 인테리어 토털 사장님이 되어서 집을 디자인 하고 자제를 선정하고 각 공정을 관리하는 인테리어 방법이라 할수 있겠죠 

 

그럼 ... 단점도 쉽게 정의가 되겠죠

 

단점은 각 공정에 대한 이해가 많이 필요하고 각종 인테리어 시공 기술자를 섭외해서 관리하는데 많이 노력과 공부가 필요합니다.  그러지 못할 경우 더 많은 예산과 시공상의 부작용이 나타날 수 밖에 없습니다. 추가로 공정 중에 일부를 셀프로 진행하게 된다면 추가로 나의 인건비도 들어가게 되겠죠

 

실제로 제가 진행했던 반셀프 인테리어에서는 인건비에 들어가는 비용을 최대한으로 줄이기 위해 공정과 공정 사이에 들어가는 공정은 제가 직접 진행하기도 했습니다.

 

예를 들면....

 

화장실 올철거 (타일 + 집기류)후 타일 시공 사이에 2차방수 (셀프)

갈매기 몰딩 철거 및 평몰딩 시공 후 도배 사이에 빠데 (셀프)

 

물론 하는 입장에서 엄청 힘들고 지치기는 하지만 공정과 공정사이에 품질을 올리기 위한 시공을 직접함으로써 시공자들에게 주의도 더 주게 되고 비용에 대한 절감도 커지게 됩니다. 

※ 제가 직접 시공한 부분은 제가 별도로 디테일하게 올리도록 하겠습니다.

 

어떤 방법이든 100% 좋거나 나쁜 방법은 없다고 생각합니다.

 

많은 Knowhow를 갖고 계신 분들에게 물어보고 철절한 사전 준비를 통해 하게 된다면 무엇보다 좋은 결과를 볼수 있으리라 생각합니다.

 

반응형
반응형

find는 실제로 리눅스 시스템에서 아주 많이 즐겨 쓰는 명령어 입니다. 

 

이런 명령어를 이용해서 무엇을 할 수 있는지 예제를 통해서 알아보는 시간을 갖도록 하겠습니다.

 

1) find를 이용해서 특정 파일의 특정 문자열 검색

 

find를 이용해서 Souce 코드를 분석 할 수 있습니다. 비단 소스코드 뿐만 아니라 아래 방법을 활용하면 리눅스 시스템에서 보다 쉽게 로그 파일 분석 및 기타 로그 파일을 분석 할 수 있습니다. 

 

find ./ -name "특정 파일 패턴" |xargs grep -n '찾고자 하는 문자열'

root@test:/mnt/linux_kernel/linux-4.19.62# find ./ -name "*.c" |xargs grep -n 'nvme_cmd_write'
./drivers/nvme/host/core.c:602: cmnd->rw.opcode = (rq_data_dir(req) ? nvme_cmd_write : nvme_cmd_read);
./drivers/nvme/host/core.c:1109:        case nvme_cmd_write:
./drivers/nvme/host/trace.c:122:        case nvme_cmd_write:
./drivers/nvme/host/trace.c:123:        case nvme_cmd_write_zeroes:
./drivers/nvme/target/io-cmd-file.c:94: if (req->cmd->rw.opcode == nvme_cmd_write) {
./drivers/nvme/target/io-cmd-file.c:321:        case nvme_cmd_write:
./drivers/nvme/target/io-cmd-file.c:337:        case nvme_cmd_write_zeroes:
./drivers/nvme/target/io-cmd-bdev.c:72: if (req->cmd->rw.opcode == nvme_cmd_write) {
./drivers/nvme/target/io-cmd-bdev.c:227:        case nvme_cmd_write:
./drivers/nvme/target/io-cmd-bdev.c:240:        case nvme_cmd_write_zeroes:
./drivers/nvme/target/admin-cmd.c:162:  log->io

cs[nvme_cmd_write]               = cpu_to_le32(1 << 0);
./drivers/nvme/target/admin-cmd.c:165:  log->iocs[nvme_cmd_write_zeroes]        = cpu_to_le32(1 << 0);

2) 특정 파일 사이즈 크기 삭제 / 복사 /이동 하기

 

find ./  -size +"파일크기"|while read line; do [리눅스 Command] $line ; done

 

이 해당 명령어를 설명하면 다음과 같습니다.

반응형

'리눅스 쉘 스크립트' 카테고리의 다른 글

awk 명령어 예제  (0) 2018.01.16
awk 사용법  (0) 2018.01.16
find 사용하기  (0) 2018.01.15
grep 으로 다중 문자열 검색  (1) 2018.01.15
grep 정규 표현식 패턴 예제 두 가지  (0) 2018.01.15
반응형

Load Average 정의


Load Average는 프로세스의 상태 중 R&D 상태에 있는 프로세스의 개수의 1, 5, 15분 마다의 평균 값입니다.

root@choi:/proc/1# uptime

00:22:03 up 38 days, 2:18, 2 users, load average: 0.00, 0.00, 0.00

, 얼마나 많은 프로세스가 실행 중 혹은 실행 대기 중이냐를 의미한다. Load Average가 높다면 프로세스가 실행 중이거나 I/O 등을 처리하기 위한 대기상태에 있다는 것이며, 낮다면 적은 수의 프로세스가 실행 중이거나 대기 중이라는 의미이다. 프로세스의 수를 세는 것이기 때문에 CPU Core 수에 따라 의미가 다소 상대적이다.

Load Average를 보다 자세히 분석하기 위해 strace를 이용해 보겠습니다.

root@choi:~# uptime

21:07:03 up 39 days, 23:03, 2 users, load average: 0.00, 0.00, 0.00

root@choi:~# strace -s 65535 -f -t -o uptime_dump uptime

21:07:28 up 39 days, 23:04, 2 users, load average: 0.00, 0.00, 0.00


uptime 명령은 /proc/loadavg 파일을 열어서 그 파일의 내용을 읽고 화면에 출력해주는 명령어이다. uptime이 계산하는 것이 아니고 커널이 미리 계산한 내용을 보여주게 된다. 커널은 Tick주기 마다 깨어나서 CPURun Queue에 있는 프로세스의 개수를 넣어서 계산한다. 과정은 복잡하게 보일 수 있지만, 결국에는 프로세스의 개수를 카운트 한다는 점이다.


9243  21:07:28 openat(AT_FDCWD, "/proc/loadavg", O_RDONLY) = 4

9243  21:07:28 lseek(4, 0, SEEK_SET)    = 0

9243  21:07:28 read(4, "0.00 0.00 0.00 1/384 9244\n", 8191) = 26

9243  21:07:28 fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 0), ...}) = 0

9243  21:07:28 write(1, " 21:07:28 up 39 days, 23:04,  2 users,  load average: 0.00, 0.00, 0.00\n", 71) = 71

9243  21:07:28 close(1)                 = 0

9243  21:07:28 close(2)                 = 0

9243  21:07:28 exit_group(0)            = ?

9243  21:07:28 +++ exited with 0 +++ 


 

Load Average가 높다는 것은 단순히 CPU를 사용하려는 프로세스가 많다는 의미도 포함해서 I/O에 병목이 생겨서 I/O 작업을 대기하는 프로세스가 많다는 의미도 있습니다. 아래의 코드를 바탕으로 CPU IO 리소스가 많이 사용해서 발생하는 부하에 대해 확인 할수 있다. 중요한 것은 Load Average가 높다고 무조건 CPU를 더 장착할 필요가 없다는 점이다.

#!/bin/bash

 

if [ $1 = "CPU" ]

then

while [ 1 ]

do

echo "1+1"|bc >& /dev/null

done

fi

 

if [ $1 = "IO" ]

then

while [ 1 ]

do

echo test > test.txt

done

fi


root@choi:/# ./test.sh CPU&

[1] 9448

root@choi:/# uptime

21:35:29 up 39 days, 23:32, 2 users, load average: 0.08, 0.02, 0.01

root@choi:/# uptime

21:35:38 up 39 days, 23:32, 2 users, load average: 0.23, 0.05, 0.02

root@choi:/# uptime

21:35:45 up 39 days, 23:32, 2 users, load average: 0.43, 0.10, 0.03

root@choi:/# ./test.sh IO&

[1] 28289

root@choi:/# uptime

21:36:45 up 39 days, 23:33, 2 users, load average: 0.75, 0.25, 0.09

root@choi:/# uptime

21:36:57 up 39 days, 23:33, 2 users, load average: 0.79, 0.27, 0.10

root@choi:/# uptime

21:37:01 up 39 days, 23:33, 2 users, load average: 0.81, 0.29, 0.11

 

 

 

root@choi:/# ./test.sh IO&

[1] 19321

root@choi:/# vmstat 1

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

0 1 9216 297768 7101296 8321568 0 0 0 62496 16165 47336 5 19 75 2 0

1 0 9216 297832 7101296 8321572 0 0 0 63252 16348 47953 7 17 76 1 0

0 1 9216 297856 7101296 8321572 0 0 0 63312 16339 47985 5 19 75 1 0

1 0 9216 297848 7101296 8321572 0 0 0 63264 16350 47992 5 19 75 1 0

1 0 9216 297840 7101296 8321568 0 0 0 63332 16352 47969 6 18 75 1 0

0 1 9216 297864 7101300 8321572 0 0 0 62528 16164 47326 5 18 74 2 0

1 0 9216 297864 7101300 8321572 0 0 0 63232 16332 47942 5 19 75 1 0

0 1 9216 297888 7101300 8321572 0 0 0 63288 16319 48000 5 20 74 1 0

1 0 9216 297888 7101300 8321572 0 0 0 63228 16336 47933 6 19 75 1 0

root@choi:/# ./test.sh CPU >/dev/null&

[1] 19328

root@choi:/# vmstat 1

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

1 0 9216 296692 7101384 8321572 0 0 2 4 2 1 0 0 100 0 0

3 0 9216 296652 7101384 8321572 0 0 0 0 1052 14372 11 23 67 0 0

1 0 9216 296504 7101384 8321572 0 0 0 0 1064 14440 10 23 67 0 0

1 0 9216 296192 7101384 8321572 0 0 0 0 1070 14447 8 25 67 0 0

2 0 9216 296444 7101384 8321572 0 0 0 0 1051 14459 9 24 67 0 0

2 0 9216 295960 7101384 8321572 0 0 0 0 1048 14365 10 23 67 0 0

1 0 9216 296440 7101384 8321572 0 0 0 0 1049 14413 10 23 67 0 0

2 0 9216 296588 7101384 8321572 0 0 0 0 1064 14424 9 24 67 0 0

1 0 9216 296768 7101384 8321572 0 0 0 68 1052 14454 10 23 67 0 0

다음은 vmstat를 이용해서 부하의 원인을 분석하는 방법을 알아보고자 한다. 첫 번째 , 두 번째 칼럼의 차이가 보인다.

r은 실행되기를 기다리거나 실행되고 있는 프로세스의 개수, bI/O를 위해 대기열에 있는 프로세스의 개수를 말한다.

 

ex) CPU기반의 부하를 일으키는 경우 : 응답속도가 느려진다. nginxjava같은 실제 서비스를 방해하는 프로세스로 인해 전체적인 응답속도가 느려지게 된다.

I/O기반의 부하를 일으키는 경우 : CPU 경합이 떨어지기 때문에 다소 응답속도가 느려지지 않지만, I/O가 들어가는 경우 I/O에 의한 병목현상이 발생할 수 있다.

 

 

 

 

 

반응형

+ Recent posts