노트북 가상메모리 설정 후기

안녕하세요, 이재웅입니다.

저는 메인으로 Thinkpad X1 (2년 전 모델) 사용 중인데요,

image

노트북이 너무 느려서 마음 고생 많이 했었는데, 가상 메모리 설정을 하니까 완전 빨라지네요? 이런 걸 왜 이제 알았는지…

혹시 제가 하면 안되는 설정을 한 것은 아니겠죠? 아무튼, 저는 새로운 노트북이 생긴 효과를 봤네요!

6개의 좋아요

개인적으로는 좋지 않다고 생각합니다.
기능을 사용하게 되시면, SSD나 HDD에 저장하게 되는데 이건 RAM에 비해 속도도 느리고, 저장장치의 수명이 단축된다고 알고 있습니다.

2개의 좋아요

아 그렇군요, 뭔가 땡겨쓰는 느낌이네요 ㅎㅎ

1개의 좋아요

기본 설정이 사용함 일텐데요??

2개의 좋아요

22
동일한 성능에도 느림은 못느끼고 살았는데
어마무시한 무언가를 하고 계신가보군요

2개의 좋아요

우선 지선생님 말씀 부터 들어 보면

Windows에서 가상 메모리는 컴퓨터의 RAM(랜덤 액세스 메모리)이 부족할 때 추가적인 메모리 공간으로 사용되는 시스템의 일부입니다. 이 시스템은 하드 드라이브의 일부를 RAM처럼 사용하여 컴퓨터의 전반적인 메모리 용량을 확장합니다. 가상 메모리를 통해 시스템은 더 많은 프로그램을 동시에 실행할 수 있고, 메모리가 부족할 때 시스템의 성능 저하를 방지할 수 있습니다.

가상 메모리의 원리와 구성

  1. 페이징 파일 (Page File):
  • 가상 메모리는 페이징 파일, 또는 스왑 파일(swap file)이라고 불리는 하드 드라이브의 파일을 사용합니다. 이 파일은 필요에 따라 메모리의 데이터를 저장하고 불러옵니다.
  • Windows에서는 일반적으로 C 드라이브에 pagefile.sys 파일로 존재합니다.
  1. 메모리 관리:
  • 운영 체제는 RAM에서 사용 빈도가 낮은 데이터를 페이징 파일로 옮깁니다. 이 과정을 "페이징 아웃"이라고 합니다.
  • 필요할 때, 이 데이터를 다시 RAM으로 불러오는 것을 "페이징 인"이라고 합니다.
  1. 성능 영향:
  • 가상 메모리를 사용하면 RAM이 부족할 때 시스템의 안정성을 유지할 수 있지만, 하드 드라이브의 읽기/쓰기 속도가 RAM보다 훨씬 느리기 때문에 시스템의 성능 저하가 발생할 수 있습니다.
  • SSD를 사용하는 경우, 페이징 파일의 읽기/쓰기 속도가 더 빨라져 성능 저하를 어느 정도 완화할 수 있습니다.

가상 메모리 설정 변경

Windows에서는 가상 메모리 설정을 사용자가 조절할 수 있습니다. 특히, 특정 애플리케이션에 대한 성능을 최적화하려는 사용자는 다음과 같이 설정을 조정할 수 있습니다:

  1. 제어판시스템 및 보안시스템고급 시스템 설정성능 설정고급 탭 → 가상 메모리 변경.
  2. 가상 메모리를 자동으로 관리할지, 또는 사용자가 직접 초기 크기와 최대 크기를 설정할지 선택할 수 있습니다.

가상 메모리의 적절한 관리는 특히 메모리 자원이 제한된 환경에서 중요할 수 있습니다. 컴퓨터의 성능과 안정성을 높이기 위해 가상 메모리 설정을 적절히 조절하는 것이 좋습니다.

페이지 파일에 대해서 보면

라고 나옵니다.

정리해서 말씀 드리면

가상 메모리는 실제 램이 부족할때 자주 사용 되지 않는 프로세스의 사용중인 메모리를
디스크에 저장 했다가 쓸때 다시 램으로 올리는 작업을 하게 됩니다.

일부 사람들의 경우 SSD의 경우 읽기 쓰기 횟수가 정해져 있다 보니
SSD를 쓸때는 가상 메모리를 끄고 쓰는 경향이 있습니다.

제 개인적 판단으로는 SSD 수명이 가상 메모리 쓴다고 확 줄 정도까지는 아닌거 같고요
실제 가상 메모리가 없다면 프로그램이 메모리 할당 하다가 실패 해서 오류가 발생 할 수 있으니
SSD를 쓰더라도 가상 메모리를 쓰는게 좋다고 생각 합니다.

추가로 위 상황을 봤을때
램이 32G 인데 느려지는 현상은
뭔가 메모리를 엄청 쓰는 프로그램을 쓰고 있을때 발생합니다.
(보통 3D 관련, 3D CAD, 포토샵, 게임 등)

그런데 가상메모리로 획기적으로 빨라 졌다는건
뭔가 백그라운드에서 메모리를 엄청 쓰는 뭔가가 있는 걸로 예상 됩니다.

작업관리자나 관리 프로그램(Process Explorer, Process Hacker 등등) 으로
프로세스 중 비정상 적으로 보이는 것을 찾아서 끄는걸 추천 드립니다.

3개의 좋아요

땡겨쓰는 것 같아 걱정되신다면 램 용량을 늘려보시는게 어떨까요?
image

저는 노트북 램 늘리고 너무 만족하고 있습니다! 한번 늘려보시는 것도 추천드려요

2개의 좋아요

12세대에 32gb 느릴만한 여지가 별로 없어보이네요
NVME 를 세대를 바꿔보시는것 어떨까요 저는
4세대 2TB 로 바꾸고 새노트북 됐어요

2개의 좋아요

저는 포멧도 심할 정도로 자주 하고 설치도 딱 아래 순서대로 하고 끝입니다.

크롬도 설치 하지 않…

  1. Windows Update
  2. Git
  3. Visual Studio 2022 Enterprise (ASP.NET, DESKTOP, UNIVERSAL) ALL .NET Ver.
  4. SSMS 19 (Management Studio)
  5. Adobe Photoshop CC
  6. Blender
  7. OBS

가상메모리를 하기전에는 Visual Studio 실행조차 느리고 답답했었거든요. ㅠ

출력은 4K 외부 모니터만 사용하고 있고, 용량도 항상 여유롭게 사용 중입니다.

image

2년 넘게 그냥 노트북이라 그러려니 하면서 참고 쓰고 있었거든요.
아무튼 빨라졌으니 일단 좀 사용해보고 다음 포맷할 때 다시 비교해보겠습니다.

모두들 고맙습니다!

1개의 좋아요

와…

무거울만 한 거 아닌가욜?ㅁ?

2개의 좋아요

이런 옵션이 있었군요.

저는 리눅스던 윈도우던 무조건 가상메모리는 필수적인 옵션으로서 끄고 켤 수 있다는 생각을 안했네요.

제가 아는 가상메모리가 아닌걸까요?

최근에 본 책에서 페이지 폴트에 대한 내용이 다뤄져있는데 이건 막을 수도 없고 당연하게 발생하는 것이라고 생각이 들었던데다, mmap 이라는 방식이 가상메모리를 사용하지 않으면 쓸 수 없는 파일 입출력 기능이라고 생각을 했어서요.

mmap이라는 것을 책을 보기전에는 알지 못하던 키워드라 일단 사실 확인은 안해보고 ChatGPT에게 물어봤습니다.

CS지식이 풍성해지는 길은 고되네요…

2개의 좋아요

이거 어케 만드는 건가요? 항상 지선생님 답변 공유하고 싶어도 방법이 없었는데

추가로 MMF 와 가상 메모리는 다른 내용입니다.

1개의 좋아요

혹시 MMF 라는 게 어떤 것인지 알 수 있을까요?

이 스레드의 글에는 MMF라는 키워드가 없어서요…

ChatGPT 공유는 아래 이미지의 마킹된 부분의 버튼을 누르시면 링크가 생성됩니다.

위에서 말씀 하신 mmap 이 MMF(Memory mapped File) 입니다.

말씀 하신 API 는 WIn32 API 이고요

.net에서는 System.IO.MemoryMappedFiles.MemoryMappedFile 클래스를 통해 사용 가능합니다.
간단하게 제가 쓴 예제는

// 쓰기
var mmf = MemoryMappedFile.CreateNew(fileName, clone.Bitmap!.ByteCount);
using (MemoryMappedViewStream stream = mmf.CreateViewStream())
{
    SKData d = SKImage.FromBitmap(clone.Bitmap).Encode();
    d.SaveTo(stream);
    stream.Flush();
}

// 읽기
using (MemoryMappedFile bitmapmmf = MemoryMappedFile.OpenExisting(bitmap.FilePath))
{
    using (MemoryMappedViewStream bitmapstream = bitmapmmf.CreateViewStream())
    {
        bitmap.Bitmap = SKBitmap.Decode(bitmapstream);
        bitmap.FilePath = string.Empty;
    }
}

요렇습니다.

1개의 좋아요

제가 말했던 내용은 OS가 애초에 가상메모리로 관리를 한다는 의미였고, 물리적 메모리와 매핑을 해주는 기능까지 있다는 뜻이었습니다.

mmap은 …제가 아무래도 헷갈리게 예시를 든 것 같습니다.

기본적으로 가상메모리 환경이 되어야 mmap을 사용할 수 있다고 이해를 했다는 뜻으로 언급했습니다.

대용량 단일 파일을 불러오기 위해서는 mmap 방식은 거의 필수적이라고도 이해했어서, OS에서 이미 Game Application같은 대용량 단일 파일을 프로세스화 해서 사용하고 있으니 mmap방식은 이미 OS에서 운용중인것 아닌가 라는 마음에 했던 말이었고, 가상메모리와는 다른 게 맞습니다.

그래서 저는 가상메모리는 OS에서 켜고 끌 수 없는 기본 옵션이라고 생각했습니다. 왜나면 가상메모리를 꺼버리면 mmap을 사용못하고 대용량 단일 파일을 프로세스화 시킬 수 없는건가? 까지 생각이 도달했기 때문입니다. (순전히 오해일 수 있지만)

그런데 저런 옵션이 있다는 거 자체가 제가 아는 가상 메모리가 아니거나, 제가 가상 메모리에 대해 오해를 하고 있는 점이 있는 것인가 해서 의문을 가졌던 것입니다.

오해 드려 죄송합니다.

1개의 좋아요

저 OS 설정에 있는 가상메모리는

설명하시는 가상메모리의 활성 비활성 옵션이 아니라

2차 메모리 (HDD / SDD)의 일부를 1차 메모리(RAM) 로 활용을 하는 옵션 아닌가요

1개의 좋아요

아하! 약간의 커뮤니케이션 미스가 있었네요.

알고 계신 부분이 맞습니다.

OS 는 프로세스 별로 메모리 테이블을 따로 관리 합니다.
이것을 페이지 테이블 이라고 한다네요.


image
// 나는 왜 안되는 것인가…

예를 들어 A 프로세스에서 메모리를 할당 하고 그 주소를 디버거에서 보던, 콘솔로 찍던 해서
B 프로세스에서 접근 하려고 하면 당연히 에러가 납니다.
OS입장에선 B프로세스의 페이지 테이블에는 할당 정보가 없으니까요.

1개의 좋아요

아…저는 이것도 기본이라고 알고 있었는데 그건 아니었나보군요.

감사합니다.

하긴 지금 생각해보니 기본이 될 수 없는 이유가 있을 거 같습니다.

RAM과 SSD, 또 HDD에는 상상을 뛰어넘는 엄청난 Access 속도차이가 있어서 기본값으로 넣어두진 않았을거같네요.