[잡담] 스레싱, 버벅이는 컴퓨터

컴퓨터의 메모리는 물리적으로 그 크기가 한정되어 있는데 비해, 메모리를 사용하고자 하는 프로그램은 많다. 특히 윈도와 같은 환경에서는 동시에 여러가지의 프로세스가 동시에 실행되면서 시스템이 운용되는데, 이런 경우 특정한 프로그램이 많은 양의 메모리를 필요로한다면 운영체제는 “페이징”이라는 기법을 사용해서 부족한 메모리를 최대한 활용하게 한다.

페이징이란 메모리의 내용을 그대로 하드디스크에 써두고, 따로 써둔 메모리를 비워 여유 공간을 확보하는 방법이다. 그렇다, 윈도에서 흔히 말하는 “가상메모리”가 바로 이 페이징을 말한다.

윈도를 사용하다보면 메모리가 아직 여유 공간이 20~40% 이상 남아 있음에도 불구하고 하드디스크를 미친 듯이 읽으며 반응이 없거나 계속해서 잠깐 잠깐 멈추는 것처럼 동작하는 경우를 종종 느낄 수 있다. 이런 경우 재부팅을 해보기도 하지만 만약 메모리를 많이 차지하는 프로그램을 몇 가지 계속 사용해야 하는 경우라면 얼마 지나지 않아 이러한 상태를 반복적으로 만나게 된다.

컴퓨터가 계속해서 페이징을 하면서 버벅이는것을 스레싱(Thrashing)이라고 한다. 스레싱을 일반적으로 컴퓨터에 장착된 물리적인 자원보다도 더 많은 자원을 계속적으로 필요로 할 때 발생한다. 2GB가 물려 있는 PC에서 여러 프로그램들이 필요로하는 메모리의 양이 그보다 많을 때 시스템은 계속해서 페이징을 하면서 순차적으로 각 프로그램들에게 필요한 메모리를 공급해 주려하게 된다.

이 때, 일반적으로 디스크에 입출력이 일어날 때 실제 프로세스는 잠시 대기하게 되어 실제로 프로세스가 CPU를 사용하는 일은 적고, 시스템은 계속 페이징을 하게되다보니 사용자가 느끼기에 컴퓨터가 멈추는 것처럼 보이는 것이 스레딩이다. 즉 컴퓨터가 프로세스를 실행하는 것보다 각 프로세스에게 자원을 돌려 막기 식으로 할당하느라 아무것도 못하는 상태를 말한다.

이미 말했지만 스레딩은 컴퓨터에 장착된 메모리가 부족할 때 발생한다. 하지만 경험적으로 윈도 상에서는 메모리의 여유공간이 꽤 남아 있음에도 스레딩을 경험할 수 있다. 이는 실제 메모리 상에는 여유공간이 있지만, OS가 프로세스에 할당해줄 수 있는 메모리의 주소가 부족할 때도 같은 증상이 발생할 수 있다. (특히 여유 메모리가 30% 미만일 때 프로그램 사이를 전환하면 이런 증상을 경험하기 쉽다.)

윈도XP의 경우 자원 관리가 그리 괜찮은 수준이 아니어서 그렇다고 하더라도 비스타나 7에 이르면서도 이런 자원의 효율적인 관리는 여전히 만족할만한 수준으로 이뤄내고 있지는 못하는 것 같다.

몇 년 전 주로 쓰는 컴퓨터의 운영 체제를 리눅스로 바꿨을 때, 이러한 스레딩을 별로 경험하지 못한다는 걸 알았고 맥으로 전향한 이후에도 상당히 쾌적한 (심지어 몇 달씩 컴퓨터를 끄지 않아도 되는) 사용을 계속해 왔다.

컴퓨터는 별로 느려지지 않았지만 메모리 사용량이 99%에 달했을 때 솔직히 개인적으로 충격을 받았다. 그렇다 유닉스 계열 (엄밀히 리눅스를 유닉스 계열이라 칭하는 게 정확한 표현인지는 모르겠으나)에서는 정말이지 극도로 메모리를 잘 활용하고 있더라는 걸 깨닫는 순간.

맥을 사용해온지 만2년이 되는 것 같다. 역시나 맥에서도 스레싱을 거의 경험해보지 못한 것 같다. 회사에서 무거운 아웃룩, 파워포인트, 엑셀을 거의 항상 띄워두고 일하다 보면 회사 컴퓨터도 맥으로 지급해주면 얼마나 좋을까 하는 생각을 오늘도 해 본다. 만약 이런 버벅임 때문에 컴퓨터를 쓰기가 힘든 지경이고 업그레이드를 고민하고 있다면, 더 높은 성능의 컴퓨터를 사기보다는 리눅스나 맥으로의 전향을 고려해 보는 것이 정신 건강에 좋을 것이라고 말해주고 싶다.

[news] Firefox 판올림

Firefox가 한국시간으로 오늘 11에서 12.0으로 판올림됩니다. Help 항목의 About Firefox… 를 통해 업데이트 할 수 있고 주요 개선점은 다음과 같습니다.

  1. 보안 이슈 패치
  2. 브라우저 엔진이 Gecko 12로 변경
  3. 윈도 버전의 경우 백그라운드 서비스를 통해 판올림 가능해지며 UAC 확인창 없이 업그레이드되도록 합니다.
  4. 소스 보기를 하는 경우 줄 번호가 표시되며,
  5. 페이지 내에서 “찾기” 하는 경우 찾은 결과가 화면 중앙에 표시되도록 합니다.

베타버전은 13, 오로라버전은 14, 일일 빌드 버전은 15로 올라갔으며, 다음 릴리즈 일자는 (한국시간) 6월 6일로 예정되어 있다고 합니다.

사실 이전 버전인 11에서도 가능했는데, 일부 확장의 경우 구글 크롬처럼 브라우저의 재시작 없이 바로 설치가 가능합니다. (awesome screenshot 등)

Vim 에서 파이썬 스크립트 바로 실행하기

…라고 제목을 쓰면 Vim을 파이썬 IDE로 탈바꿈 시키는 위대한 플러그인 들을 사용하는 방법을 말하는 것 같아서 약간 낚시 같지만, vi 쓰기 시작한지도 얼마안되는데 이런 플러그인 들은 찾기도, 설정하는 것도 어려워서 포기.

사실 파이썬 코드 작성하는데는 IDLE이 그리 부족하다고 생각하지도 않지만, 그래도 왠지 vi에 애착이 가기 시작하는데, 작성한 코드를 따로 실행하는 게 너무 번거롭다. 따라서 해결책은 현재 편집중인 스크립트를 저장하고 실행하는 명령을 다른 키에 맵핑해주면 된다는 것.

:map <F2> :w<Enter>:!python %<Enter>

라고 실행해주고 일단 한 번 파일을 저장한 후, F2 키를 눌러주면 끝. %는 현재 편집중인 파일의 파일 이름을 말한다. MacVim에서는 Vim의 명령 줄 아래로 결과가 출력되는 것을 볼 수 있다.

tar 포맷으로 파일을 백업하기

윈도 환경에서는 거의 접할 일이 없지만 리눅스나 OSX를 사용하면서 간간히 볼 수 있는 포맷이다. tar는 tape archive의 약어로 컴퓨터의 초창기에 테이프에 자료를 백업하기 위해 자료를 직렬화하여 기록할 수 있는 포맷으로 개발되었다. 초기 유닉스때 채택되어 지금까지 사용되는 유서깊은 포맷이며, tar는 이 포맷을 지칭하는 동시에 이 포맷으로 자료를 직렬화하는 프로그램을 가리키는 말이기도 하다.

tar로 압축을 할 때 다음과 같이 쓰면 된다. 파일명에 .gz가 붙는 이유는 gzip으로 압축되었다는 표시이다.

tar -cvzf newtarfile.tar.gz file1 file2 file3 ...

옵션은 다음과 같다.

  • c : create. 신규 tar 파일을 작성한다.
  • v : verbose. 추가되는 파일이 무엇인지 알려준다. 이 옵션을 빼면 아무것도 화면에 표시하지 않는다.
  • z : gzip 알고리듬을 사용하여 데이터를 압축한다. 압축을 풀때는 무시된다.
    이때는 파일 이름에 .tar.bz2 를 통상 붙여준다. (풀 때도 j 옵션을 주라고)
  • f : 기록장치로 파일을 사용한다.

이렇게 압축한 파일을 풀 때는 x옵션을 사용한다.

tar -xvf newtarfile.tar

다른 동작들

tar 파일 내의 파일을 삭제하고 싶을 때

tar -f tarfile.tar --delete file2 file4

tar 파일에 다른 파일을 추가할 때

tar -rf tarfile.tar file7 file8

새로운 파일로 업데이트 할 때. 신규 파일인 경우에만 추가된다.

tar -uf tarfile.tar file7

살펴볼만한 옵션들

  • p : 추출시 파일의 접근 권한을 유지한다.
  • P : 압축 시 파일의 절대 경로를 보존한다. 이 옵션으로 압축하면 어느 위치에서 풀어도 원래의 절대 경로에 풀리게 된다.
  • o : 추출 시 같은 이름의 파일이 파일 시스템에 이미 존재한다면 덮어쓴다.

리눅스나 유닉스 계열에서는 사용자 계정 데이터를 통째로 백업하는데 이 명령을 사용할 수 있다.

tar -cvzfP my_backup.tar.gz ~

[팁] 긴 글을 쉽고 빠르고 정확하게 선택하는 법

가끔은 많은 분량의 텍스트를 웹페이지로 부터 긁어다 복사하는 일을 할 때 분량이 많아서 스크롤을 한참 내려야 하는 경우가 있다. 이 때 드래그를 아래로 내리다보면 자동으로 스크롤이 내려가게 되는데 이게 속도 조절이 마음대로 되지 않아서 흔히 실수로 버튼을 놓아버린다거나, 오르락 내리락하면서 정확한 마지막 지점을 찾기 힘든 경우가 있다. 이때 쉽게 활용할 수 있는 방법.

Finder나 탐색기에서 여러 개 파일을 한 번에 선택할 때 첫 번재 파일을 클릭하고 맨 마지막 파일을 Shift를 누른 상태로 클릭하면 그 사이의 파일들이 모두 선택되는데, 이러한 규칙이 웹브라우저의 텍스트 긁기에도 똑같이 적용된다. 아래 그림들은 본 블로그의 긴 글의 일부를 복사하는 방법이다.

이 상태에서 아래로 신나게 스크롤한다. 마우스 왼쪽 버튼을 클릭하지 않도록 조심조심;; 그런다음 선택해야 할 글의 끝 부분을 찾아서….
이렇게 해주면 클릭한 두 지점사이의 모든 텍스트를 선택할 수 있다.

이 팁은 웹 브라우저 뿐만 아니라 MS워드, 메모장 같은 문서 편집기에서도 동일하게 적용되므로 긴 글을 편집해야 할 때 알아두면 은근히 편리하다.