Skills/System 2020. 3. 23. 21:29

메모리의 사용량 그리고 메모리의 어느정도 사용시 Swap 이 발생하고

이 비율을 어떻게 조절하는지에 대한 인터넷사이트나 페이지, 문서는 상당히 많은데,

막상 다소 잘못된 내용들이 너무 넘쳐나는 것 같고, 제대로 짚어주는 사람은 아무도 없어

글을 급하게 쓰기 시작한다.

사람의 인체와 마찬가지로 컴퓨터의 CPU 와 메모리라는 것은 상당히 복잡한 영역이다.

따라서 단순한 계산으로 쉽게 계산할 수 있는 방법은 존재하지 않는다.

결국 그때 그때의 사용정도만 종합적으로 보여준는 것이 다들 알고 있는

Free, top, mpstat, vmstat 등 의 명령인 것이다.

그 값에 의심을 갖지 말고 그냥 좀 믿자 .. 뇌피셜이 많아질수록 꼰대가 된다..

다시한번 결론!

Swappiness 가 0 으로 설정되어 있다고 해서 스왑을 안쓴다는건 아니다. 명심하자.

* 읽으신분들이 쪼금 되서 급하게 추가 :
"Swappiness 를 그럼 언제 쓰란 말이냐"

** File-backed 관련 테스트를 위한 간단한 Python code.
( file 은 dd if=/dev/zero of={filename} bs=1024M count=XXX 로 생성 )

#!/usr/bin/env python

import sys
import os

if len(sys.argv) != 2:
    print "usage: %s <file-name>" % sys.argv[0]
    sys.exit()

pid = os.getpid()

f = open(sys.argv[1], "r")
size=f.read()

print ("File read test (%d) : %s read - %dM") % (pid, sys.argv[1], len(size)/1024**2)

while True:
    pass

테스트를 할때 여러조건으로 중복으로 실행하며 테스트 해보시면 좋다..
(난 귀찮아서 ㅠㅠ)

*** 관련 하여 회사 Mailing List 에서 커널개발팀 답변 :

Also we *very strongly recommend* not setting vm.swappiness=0. That can
result in some corner cases where the system has sputtering hang-ups
when it finally does have to swap for some reason.

Unless oswatcher is showing major %so/%si (swap-out/in) activity, it's
not having any impact on system performance, so if the underlying
question is about performance, you're probably looking at the wrong thing.

Swappiness 가 메모리를 더 적극적으로 활용하도록 하는 것은 맞지만,

Pinch 상황 즉, 시스템 부하가 높아지는 상황에서는 심각한 서비스 영속성 ( service continuty )

손상시키는 결과를 불러올 수 있다는 점을 경고하고 있다.


posted by mirr

댓글을 달아 주세요

Skills/mY Technutz 2020. 3. 19. 10:41

회사 자동로그인 시스템을 회사 내부 워킹데스크탑에서 파이떤을 이용해 돌리는데,

보안을 위한 APM 을 사용하므로, 부팅시 꼭 직접 오프라인으로 비밀번호를 넣어줘야 부팅이되어

전원문제나 윈도우즈 업그레이드 문제 등으로 리부팅이 되면,

OS 영역으로 넘어가지를 못해서 모든 나의 "사무실에 출근한척 하기"

프로젝트와 연관된 자동화 프로그램들이 먹통이 되버리는 문제가 있었다...

특히 최근 코로나-19 로 인해 회사를 장기간 못가는 상황에서,

종종 맥북으로 cronjob 을 임시로 돌리는데

자꾸 안돌아가버리는 바람에 찾아보니.. cronjob 은 legacy/deprectated 된거나 마찬가지라

launchdlaunchctl 을 이용하라고 하는것이였다...

그래서 간략하게 plist 를 작성하고 등록하는 것에 대해서 기록해 본다.

WorkingDirectory 를 설정 안해서, 내부적으로 돌아가는 모듈화된 스크립트들이

자꾸 에러나서 한동안 삽질좀 했다는...

여러가지 동작을 하는 작업을 만들고 싶다면,

아래 애플 개발자매뉴얼을 참조하면 응용하기에 쓸만하다.

Launchd 가이드에는 사용가능한 Keyword reference 및 Cookbook 이 제공되어 유용!!

Daemons and Services Programming Guide

Launchd Guide and Cookbook

근데 사실 이거 다 필요없이 앱스토어에서 그냥 launch 로 검색하면

GUI 로 된 다양한 Launchd 관련 도구들이 많다...

즉, 난 개삽질 ㅋㅋㅋㅋㅋ

끝.

posted by mirr

댓글을 달아 주세요