20100329 :: 시스템 리소스를 올바르게 활용하는 법

지난 번에 말씀드린 ‘메모리 최적화’ 프로그램을 사용하는 방법 외에도 ‘검증되지 않은’ 무수한 메모리 관련 파워팁이 인터넷에는 중복되기도 하고, 너무 오래돼서 사실은 쓸 수 없거나, 혹은 앞선 예와 마찬가지로 잘못되었음에도 불구하고 누구 하나 검증해보거나 확인해보는 사람없이 마구 배포되고 있는 실정입니다. 게다가 많은 자료들은 사실상 10년이 넘은 것들도 많이 있지요. 즉 PC통신 시절에 자료실에 텍스트 파일 형태로 떠돌던 팁들이 아마도 네이X 지식인을 통해 유입된 것이 아닐까 생각을 해 봅니다. (설마 블로그 하시면서 그런 ‘고전 자료’를 버젓이 포스팅하실 분들은 안계실 것으로… 네이버엔 계실지도 모르겠지만…. 생각되네요.)

오늘은 지난 글에서 잠깐 소개한 대로 시스템 리소스를 올바르게 활용하는 방법에 대해 이야기해 보고자 합니다. 사실 지난 글에서는 ‘메모리 관리법’이라고 이야기했지만, 일반 사용자 입장에서 시스템의 메모리를 관리할 수 있는 방법은 사실 상 전무하거든요. 그런데 이런 메모리 관리를 하는 목적 자체가 ‘보다 쾌적한 사용환경’을 원하는 PC 사용자의 기본적인 욕구를 충족한다는 측면에서 똑같은 하드웨어를 가지고서 만족하며 사용하는 사람이 있고, 불평과 불만에 빠져 오늘 밤도 토끼눈이 되어 시스템 최적화 팁을 찾아 해메고 있을지도 모를 일입니다.

시스템 리소스와 시스템 최적화

시스템 리소스는 시스템이 동작하면서 활용하게 되는 자원입니다. 우리가 가장 많이 관심을 갖는 메모리가 대표적인 시스템 리소스이지요. 그 외에 시스템 리소스에는 하드디스크, CPU 및 네트워크 전송량과 같은 것들이 포함됩니다. 물론 여러 가지 프로그램들이 동시에 실행되는 윈도와 같은 멀티 태스킹(혹은 멀티 스레드)  환경에서는 시스템 리소스를 효율적으로 사용하고 관리하는 것이 하드웨어 자체의 업그레이드 없이 성능을 향상 시킬 수 있는 방법입니다.

그런데, 우리가 흔히 말하는 ‘시스템 최적화’는 무엇일까요? 글쎄요, 잘 모르겠습니다.(읭?) 최적화(optimization)라는 말 자체가 너무나 모호해요. 그럼 많은 블로그 포스팅이나 소위 ‘최적화 프로그램’들이 말하는 최적화가 무언지 살펴보면 답이 나올까요? 많은 사람들은 최적화가 ‘시스템 리소스를 많이 확보하는 것’이라고 합니다. 그런데 우리는 왜 시스템 최적화를 하고 싶어하는 것일까요? 네, ‘보다 빠르게 프로그램이 실행되고, 더 나은 퍼포먼스를 보이기 위해서’가 그 답이 될 겁니다. 물론 ‘다소 부족한 사양의 하드웨어’를 비용을 들이지 않고 활용하기 위한 방안도 있습니다만, 이것은 일반적인 범주에서는 빼도록 하겠습니다. 만약 여전히 256MB 이하의 램을 장착한 PC를 가지고 웹서핑을 하기에 대한민국의 웹은 너무나 무겁고 좀 병신 같거든요.

다시 정리해 보겠습니다. ‘시스템 최적화’는 결국 한정된 시스템 리소스를 최대한 활용하는 방안입니다. 그리고 이 시스템 최적화라는 것은 컴퓨터를 주로 사용하는 용도에 따라서, 그리고 개개인의 취향이나 컴퓨터 활용 능력 등등 매우 다양한 요소에 따라 조금씩 조금씩 달라질 수도 있습니다. 두말하면 잔소리지요. 그런데 대부분의 최적화 팁이라는 것은 그저 ‘유휴 리소스를 많이 남기는 것’에 치중하고 있습니다. 게다가 이런 팁들은 너무 오래된 것들이 많다는 것이지요. 고작 윈도XP SP1이 나오던 시점 혹은 그 이전에 나왔던 팁이고, 사실상 지금과는 조금 다른(?) 목적에서 작성된 팁들도 있으며, 심지어는 ‘아무런 효과가 없는 것으로 판명’된 팁들도 많이 있다는 것입니다.

그럼 이렇게 수많은 팁들을 어떻게 적용하는 것이 올바른 ‘최적화’가 되는 것일까요? 모든 이들이 원하는 바를 모두 충족시키기는 어렵겠지만, 최소한 일반적으로 가져가야 할 원칙, 그리고 아주 단순한 원리 몇 가지를 통해 각자가 판단하는 것이 맞겠지요.

비쌀수록 빠르다.

당연한 이야기지만, 지금쓰고 있는 시스템의 성능보다 더 좋은 성능, 그리고 이를 통해 더욱 쾌적한 환경에서 컴퓨터를 사용하길 원한다면 가장 확실한 방법은 시스템 하드웨어 자체를 업그레이드 하는 것입니다. CPU 클럭이 높을 수록 플래시가 떡칠된 사이트는 조금이라도 더 가볍게 돌아갈 것이고, 그래픽 카드가 조금이라도 더 고사양이라면 화면 반응이라든지 체감 성능이 확연히 달라질 수 있습니다. 물론 돈이 들지요. 그렇다면 시스템을 구성하는 일부 구성품을 더 좋은 것으로 바꾸는 방법도 있습니다.

이 때 중요한 것은 바로 ‘최소량의 법칙’입니다. 최소량의 법칙은 식물의 성장은 가장 필요치가 낮은 항목에 의해 결정된다는 법칙으로 시스템 체감 성능에서도 마찬가지로 절대적인 원칙이라 할 수 있습니다. 즉 CPU의 클럭속도가 아무리 빠르고, 램이 8기가, 16기가가 장착되어 있더라도 플로피 디스크로 부팅해야 하는 시스템이라면? 부팅하는 데 하루 반나절이 걸린다 한들 하등 이상할 것이 없지요. 즉 시스템 퍼포먼스는 가장 느린 구성품에 의해 전체가 발목이 잡힌다는 이야기입니다.

그렇다면 지금 여러분이 당장 바꿔야 할 것은, 램을 하나 더 끼우는 것이 아니라, 보다 빠른 하드디스크를 장착해야 한다는 뜻입니다. (물론 하드 디스크 액세스를 현저하게 줄일 수 있도록, 램을 충분히 확장하는 것이 더 좋은 선택일 수도 있습니다.) 요 이야기는 이어서 계속 하도록 하지요.

아끼면 똥된다

먼저 하고 싶은 이야기는 이것입니다. 네, 아끼면 똥됩니다. 1GB 이상의 메모리를 장착한 시스템에서 메모리 최적화 같은 것이 과연 필요할지는 조금 의문이라는 말입니다. 즉 몇 백 MB나 유휴 메모리가 남아있는 상황이라면 굳이 메모리 최적화를 하지 않아도 됩니다. 지난 글에서 밝혔듯이 메모리 최적화라는 것은 그저 지금 메모리에 올려져 있는 데이터를 하드 디스크로 덤프하여 메모리의 빈 공간을 늘려보이게 만드는 것 뿐, 전체 데이터의 총 량이 변하는 것은 아니기 때문입니다. 결국 이런 상황은 최소량의 법칙에 따라 메모리에 비해 극히 느린 하드디스크 액세스 속도때문에 시스템 전체 성능의 저하를 가져오게 됩니다. 만약 윈도XP를 사용 중이고, 메모리를 2GB 이상을 장착했다면 오히려 역으로 메모리를 많이 쓸 것을 권합니다. 메모리를 시스템 중에서 가장 속도가 빠른 구성품이니, 가능한 많은 양의 데이터를 미리 미리 메모리에 적재 시켜 두는 것은 (항상 그럴 수는 없겠지만) 필요할 때 하드디스크에서 읽어 들이는 것보다 속도가 빨라질 수 있습니다.

즉, 메모리 2GB 이상인 시스템에서는 다음과 같은 설정을 권합니다. (윈도를 안 쓰니, 자세한 설명은 생략한다.)

  • 가상 메모리의 크기는 일반적으로 실제 RAM 크기의 1.5~2배 가량의 크기를 잡는 것이 좋다고 합니다만, 가상 메모리를 전혀 사용하지 않도록 합니다. 다만, 동시에 많은 프로그램을 실행하여 메모리가 부족한 상황이 발생한다면, 가상 메모리를 다시 사용하도록 하는 것이 맞습니다. (이런 경우는 포토샵에서 수백 메가 바이트에 달하는 대형 이미지를 편집하지 않는 이상은 발생하기 힘들겁니다.)
  • 가상 메모리를 사용하지 않는다면, 메모리의 데이터를 덤프 시킬 공간이 부족하기 때문에 ‘최대 절전 모드’ 등을 사용하지 않도록 해야 합니다. (전원 관리 > 네트워크 서버 등을 선택)
  • 시스템 설정 > 성능 탭에서는 메모리 사용의 우선 순위를 프로그램이 아닌 백그라운드 서비스를 선택합니다. 이로써, 사용자가 당장 실행하지 않은 백그라운드 서비스가 딜레이 없이 더욱 빠르게 활성화 될 수 있습니다.

윈도우 서비스의 경우에도 마찬가지 입니다. 도아님이 집대성하신 윈도우 서비스 총정리를 참고해서 안쓰는 서비스를 꺼두는 것도 나쁘지 않습니다. 다만, 대부분의 윈도 서비스는 백그라운드로 실행되기 때문에 서비스를 끄는 것이 체감적으로 성능 향상을 가져오지는 않습니다. 일부 서비스의 경우에는 실행 중이 아닐 때, 필요 시 강제로 실행되기도 하므로 서비스를 마구 ‘사용 중지’ 처리하면 시스템이 되려 느려지거나, 올바로 작동하지 못하는 경우도 있습니다. 다만, 필요 없는 서비스를 모두 사용안함으로 설정하는 경우, 윈도의 부팅만큼은 확실히 빨리짐을 느낄 수 있습니다.

결국 윈도의 초기 세팅은 ‘가장 많이 사용하게 될 것 같은’ 형태로 세팅되어 나오게 된다는 이야기입니다. 즉 사용자는 필요한 기능을 찾아서 켜는데 익숙치 않으며, 사용하지 않는 기능이라 하더라도 백그라운드에서 영향을 최소화하여 실행하는 것으로 초기 값을 결정해 두는 것이 MS로서도 최선의 선택이 아니었나 싶습니다. 따라서 결벽증을 가진 분이 아니시라면, 혹은 하드웨어 사양이 지나치게 좋지 않아 별도의 튜닝이 필요한 상황이 아니라면 사실 상 윈도 서비스를 건드리는 일도 불필요합니다. 실제로 일반 사용자들은 윈도 서비스가 정확이 어떤 시점에 동작하는지는 알기가 힘들기 때문에 그냥 조금의 리소스를 더 할당하여 시스템이 원활히 돌아갈 수 있도록 두는 것이 어쩌면 더 나은 방법이 될 수 있습니다. 여러분이 지금 사용하고 있는 PC는 남의 컴퓨터 보다 많이 느린 고물 같이 느껴질 수 있지만, 그것은 그저 남의 떡이 더 커보이는 심리일 뿐, 여전히 쓸만한 시스템이라는 이야기입니다.

레지스트리

그리고 또 하나 이제는 전설이 되어버린 윈도 레지스트리에 대한 이야기도 조금 해 보고자 합니다. 윈도의 시스템 레지스트리는 거의 모든 어플리케이션과 관련된 설정 정보를 담는 거대한 데이터 베이스라 할 수 있습니다. 레지스트리는 시간이 지날수록 방대해지고 비대해져서 레지스트리 최적화 프로그램 같은 걸로 최적화를 해주지 않으면 안된다는 이야기 많이 들어보셨을 겁니다. 그런데 이런 레지스트리 최적화가 가져가주는 성능의 향상을 측정한 테스트 결과는 혹시 보신 적이 있으신가요?

윈도우의 시스템 레지스트리는 무려 수 십 만 개에 달하는 키[1. 레지스트리는 컴퓨터의 정보를 담은 하나의 ‘사전’이라고 보면 됩니다. 여기서 말하는 키는 사전에 수록된 각각의 단어 엔트리입니다.]들로 구성돼 있습니다. 일반적인 최적화 프로그램들은 더 이상 하드디스크 상에 존재하지 않는 경로를 참조하는 항목이라든지, 잘못된 확장자-프로그램 연결 등을 삭제합니다. 그리고 한 번 쯤은 이런 프로그램들 실행해 보셨을 겁니다. 이런 프로그램들이 삭제하는 ‘쓸모없는’ 키 들은 많아야 고작 몇 백 개 수준입니다.  결국 전체 레지스트리의 0.01% 정도에 그친다는 이야기입니다. 이런 정도로 미미한 분량을 삭제해서 성능 향상을 체감할 수 있다면, 그런 성능 차이를 느낄 수 있는 감각이 정말 대단하시다고 밖에는… 그렇다고 이런 프로그램들이 쓸모 없는 것은 아닙니다. 삭제 되는 과정에서 레지스트리의 항목을 제대로 처리하지 않는 쓰레기 혹은 양아치 같은 프로그램들이 여전히 너무나 많은 상황이기 때문입니다. 레지스트리는 파일시스템 내에서 작지 않은 크기로 존재하는 파일입니다. 따라서 이 것이 물리적으로 손상될 확률이 커질 수는 있지요. 그래서 CCleaner와 같은 프로그램들로 간간히… 한 번씩 정리해주는 것은 윈도의 포맷 주기를 조금 더 길게 가져가는 좋은 습관일 수 있습니다.

만약, 어떠한 팁에서 레지스트리 편집기를 열어서… 로 시작하는 문장이 발견된다면 그냥 무시하시기 바랍니다. 자칫 잘 못하면 그 다음 번부터는 부팅이 안되는 최악의 상황까지 펼쳐질 수 있는 팁을 따라하느니, 저 같으면 0.01%도 안되는 찌거기를 참고 말겠습니다.

알아서 하게 놔두자

그리고 또 한 가지 Volume Shadow Copy, 그리고 시스템 복원 (System Restore)에 대한 이야기입니다. 일단 시스템 복원 서비스 자체의 안정성이나 신뢰성 문제는 차치하고서라도, 시스템 복원 서비스는 시스템의 유휴 상태에 동작하는 것도 아니고 여러분이 뭔가 프로그램을 설치하거나, 업데이트를 설치할 때 그리고 작업 스케줄러에 시스템 복원 지점을 만들라고 지정해 놓았을 때만 동작합니다. 그러니까 아무리 시스템 복원 서비스를 활성화 시켜 두었다 하더라도 가만히 놔둔 컴퓨터에서는 시스템 복원 서비스가 동작하지 않습니다. 대신에 시스템 복원 서비스를 통해 시스템을 이전 시점으로 복원시키는 것 자체가 그다지 신뢰할만한 결과를 가져오지 못하니 차라리 Comodo Time Machine과 같은 백업 유틸리티를 쓰는 것을 추천하긴 합니다.

좋은 거 쓰자

하드웨어를 좋은 걸 쓰려면 필연적으로 돈이 들지만, 소프트웨어는 꼭 그러라는 법은 없습니다. 더 좋은 걸 쓰면 됩니다. 가장 간단한 예로 웹 브라우저를 보도록하지요. IE6를 쓰는 대신 구글 크롬을 쓴다면? 벤치마크 테스트들이 말해주듯이 두 프로그램은 거의 10배 정도의 성능차이를 보입니다. 아 구글 크롬이나 파이어폭스쓰면 ‘IE에 최적화된’ 국내 사이트들을 못 쓴다구요? 그건 국내 사이트들이 IE에 최적화 돼서 그런게 아니라 싸이트를 존내 못 만들어서 그렇습니다.

그리고 MS오피스 2007, 포토샵CS3, CS4 등등…

최신 버전이면서 엄청나게 무겁죠. 전 그냥 예전 버전씁니다. 자 포토샵6와 포토샵CS4를 비교할 때, 새로 추가된 기능은 몇 개나 되나요? 아니 그러니까 이전에 있던 기능들을 묶어서 하나로 만든 거 말고 완전히 새로운 기능이요. 그리고 그 기능들을 제대로 알고 있고, 필수적으로 사용하나요? 이런 질문들에 대해 디자이너가 아닌 이상 쉽게 대답하기 힘들겁니다. 그렇다면 좀 가벼운 예전 버전을 쓰는 걸 고려해 보시는 것도 좋을 듯 하네요.

결론

결국 말씀드리고자 하는 것은 이렇습니다. 일반적인 사용 목적에서 시스템 최적화라는 것은 ‘메모리 최적화’와 마찬가지로 그런 프로그램들을 팔기 위한 마케팅 용어에 지나지 않는 다는 것입니다. 인터넷에 떠도는 출처도 불분명한 수많은 팁들과, 검증조차 하지 않은 채 ‘와 정말 빨라졌어요’를 연발하는 댓글들을 보노라면, 저도 ‘혹’하는 마음이 일기도 합니다만, 이래저래 손대서 뒷감당 못하느니 차라리 조금 더 마음을 편하게 먹는 게 좋다는 이야기입니다. 시스템의 성능 향상을 위해서는 결국 시스템 자원을 최대한 활용하는 쪽으로 컴퓨터를 설정하고 또 같은 용도라면 조금 더 빨리 동작하는 우수한 프로그램을 사용하면 됩니다. 그리고 쓸데없이 무겁기만 무거운 최신 버전에의 강박을 버릴 때, 남들보다 더 편안히 ‘이미 최적화된’ 환경에서 컴퓨터를 사용하게 된다는 말씀입니다.

ps. 도아님이 윈도 서비스를 내용을 집대성 해 놓으신 글을 링크 걸고 싶은데, 못 찾겠네요…

ps2. 원래는 매우 짧은 글이 될 글이었는데, 괜히 흥분해서 또 길어져 버렸네요. 긴 글 읽어주셔서 감사합니다.