Linux 에서 커널 오버커밋이 활성화되었는지 확인하는 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 에서 가상 메모리 오버커밋 설정을 확인하는 방법을 배우게 됩니다. sysctl 명령을 사용하여 vm.overcommit_memory 커널 파라미터를 확인하고, 다양한 값을 이해할 것입니다.

또한 /proc 파일 시스템, 특히 /proc/sys/vm 디렉토리를 탐색하여 커널 파라미터가 파일로 어떻게 노출되는지 살펴볼 것입니다. 마지막으로, /etc/sysctl.conf 파일을 검사하여 이러한 설정이 어떻게 영구적으로 구성될 수 있는지 확인할 것입니다. 이 랩은 Linux 환경에서 커널 오버커밋 설정을 확인하고 이해하는 방법에 대한 실질적인 이해를 제공할 것입니다.

sysctl vm.overcommit 으로 오버커밋 확인

이 단계에서는 sysctl 명령을 사용하여 Linux 에서 가상 메모리 오버커밋 설정을 확인하는 방법을 배우게 됩니다.

가상 메모리 오버커밋은 Linux 의 기능으로, 시스템이 물리적으로 사용 가능한 메모리보다 더 많은 메모리를 프로세스에 할당할 수 있도록 합니다. 이는 경우에 따라 유용할 수 있지만, 프로세스가 실제로 할당된 모든 메모리를 사용하려고 시도하면 문제를 일으킬 수도 있습니다.

sysctl 명령은 런타임에 커널 파라미터를 확인하고 수정하는 데 사용됩니다. 우리는 이 명령을 사용하여 vm.overcommit_memory 파라미터의 값을 확인할 것입니다.

아직 터미널을 열지 않았다면 엽니다. 데스크탑 왼쪽의 Xfce Terminal 아이콘을 클릭하여 열 수 있습니다.

이제 터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.

sysctl vm.overcommit_memory

이 명령은 커널에게 vm.overcommit_memory 파라미터의 현재 값을 표시하도록 요청합니다.

다음과 유사한 출력을 볼 수 있습니다.

vm.overcommit_memory = 0

0은 기본 휴리스틱 오버커밋 처리를 나타냅니다. 다른 가능한 값은 1 (항상 오버커밋) 및 2 (절대 오버커밋 안 함) 입니다. 이 설정을 이해하는 것은 시스템 성능과 안정성에 중요하며, 특히 메모리 요구 사항이 높은 환경에서 중요합니다.

다음 단계로 진행하려면 Continue를 클릭하십시오.

/proc/sys/vm 에서 설정 확인

이 단계에서는 /proc 파일 시스템, 특히 /proc/sys/vm 디렉토리를 탐색하여 가상 메모리와 관련된 커널 파라미터가 어떻게 노출되는지 살펴봅니다.

/proc 파일 시스템은 프로세스 및 기타 시스템 정보에 대한 정보를 제공하는 가상 파일 시스템입니다. 커널의 현재 상태를 검사하기에 좋은 곳입니다. /proc 내의 /proc/sys 디렉토리에는 런타임에 확인하고 때로는 수정할 수 있는 커널 파라미터에 해당하는 파일이 포함되어 있습니다.

/proc/sys/vm 디렉토리는 가상 메모리 서브시스템과 관련된 파일을 보관합니다. 이전 단계에서 확인한 vm.overcommit_memory 파라미터는 이 디렉토리에 해당 파일이 있습니다.

cat 명령을 사용하여 vm.overcommit_memory를 나타내는 파일의 내용을 확인해 보겠습니다. cat 명령은 파일의 내용을 표시하는 데 사용됩니다.

터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.

cat /proc/sys/vm/overcommit_memory

이 명령은 /proc/sys/vm에 있는 overcommit_memory 파일의 내용을 읽어 터미널에 출력합니다.

이전 단계에서 sysctl 명령으로 확인한 것과 동일한 값을 볼 수 있습니다.

0

이는 sysctl이 기본적으로 /proc/sys 파일 시스템의 이러한 파일을 읽거나 쓰는 것임을 보여줍니다.

/proc/sys/vm 디렉토리의 파일을 나열하여 다른 가상 메모리 관련 파라미터를 확인할 수도 있습니다. ls 명령을 사용합니다.

ls /proc/sys/vm/

가상 메모리와 관련된 각기 다른 커널 파라미터를 나타내는 파일 목록이 표시됩니다.

compact_hueristic
compact_memory
dirty_background_bytes
dirty_background_ratio
dirty_bytes
dirty_expire_centisecs
dirty_ratio
dirty_writeback_centisecs
drop_caches
extfrag_threshold
hugetlb_shm_group
laptop_mode
lowmem_reserve_ratio
min_free_bytes
min_slab_ratio
min_unmapped_ratio
mmap_min_addr
nr_hugepages
nr_hugepages_mempolicy
nr_overcommit_hugepages
numa_balancing
numa_balancing_scan_period_max_ms
numa_balancing_scan_period_min_ms
numa_balancing_scan_size_mb
numa_balancing_settle_count
numa_balancing_timeout
oom_dump_tasks
oom_kill_allocating_task
overcommit_memory
overcommit_ratio
page-cluster
panic_on_oom
percpu_pagelist_fraction
stat_interval
swappiness
user_reserve_kbytes
vfs_cache_pressure
watermark_boost_factor
watermark_scale_factor
zone_reclaim_mode

이를 통해 Linux 커널의 가상 메모리 서브시스템에서 사용할 수 있는 많은 조정 가능한 파라미터를 엿볼 수 있습니다.

계속 진행하려면 Continue를 클릭하십시오.

cat /etc/sysctl.conf로 설정 검토

이 단계에서는 재부팅 시에도 지속적으로 커널 파라미터를 구성하는 데 사용되는 /etc/sysctl.conf 파일에 대해 배우게 됩니다.

sysctl 명령을 사용하거나 /proc/sys의 파일에 쓰기 작업을 수행하여 런타임에 커널 파라미터를 변경할 수 있지만, 이러한 변경 사항은 일반적으로 임시적이며 시스템이 다시 시작될 때 손실됩니다. 커널 파라미터 변경 사항을 영구적으로 적용하려면 일반적으로 /etc/sysctl.conf 파일 또는 /etc/sysctl.d/ 디렉토리의 파일에 추가합니다.

시스템이 부팅될 때 /etc/sysctl.conf에서 설정을 읽고 적용합니다.

cat 명령을 다시 사용하여 /etc/sysctl.conf 파일의 내용을 확인해 보겠습니다.

터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.

cat /etc/sysctl.conf

이렇게 하면 주 sysctl 구성 파일의 내용이 표시됩니다.

#로 시작하는 줄이 표시될 수 있는데, 이는 주석이며 무시됩니다. 다른 줄은 parameter = value 형식으로 되어 있으며, 이는 sysctl 명령 출력에서 본 것과 유사합니다.

#
## /etc/sysctl.conf - Configuration file for setting system variables
## See /etc/sysctl.d/ .conf files for other system variables
#

#kernel.domainname = example.com

## Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3

##############################################################3
## Functions previously found in netbase
#

## Uncomment the next two lines to enable Spoofing attacks protection
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

## Uncomment the next line to enable TCP/IP SYN cookies
#net.ipv4.tcp_syncookies=1

## Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

## Uncomment the next line to enable packet forwarding for IPv6
#net.ipv6.conf.all.forwarding=1

##############################################################3
## Blow away nobody in the kernel
#

#kernel.yama.ptrace_scope = 1

##############################################################3
## Magic system request Key
#

#kernel.sysrq = 176

##############################################################3
## Dynamic Shared Memory:
#

#kernel.shmmax = 4294967295
#kernel.shmall = 268435456

##############################################################3
## Other settings
#

#fs.file-max = 100000

#vm.swappiness = 60
#vm.vfs_cache_pressure = 50

#kernel.nmi_watchdog = 0

vm.overcommit_memory 파라미터가 이 파일에 명시적으로 설정되어 있지 않을 수 있습니다. /etc/sysctl.conf 또는 /etc/sysctl.d/에 파라미터가 설정되어 있지 않으면 커널은 기본값을 사용합니다. sysctl 명령과 /proc/sys/vm/overcommit_memory에서 본 값은 현재 활성 값이며, 이는 기본값이거나 부팅 중에 다른 구성 파일 또는 스크립트에 의해 설정될 수 있습니다.

/etc/sysctl.conf를 이해하는 것은 지속적인 시스템 튜닝에 매우 중요합니다.

이 실습을 마치려면 Continue를 클릭하십시오.

요약

이 실습에서는 Linux 에서 가상 메모리 오버커밋 설정을 확인하는 방법을 배웠습니다. sysctl vm.overcommit_memory 명령을 사용하여 이 커널 파라미터의 현재 값을 확인했으며, 값 0은 기본 휴리스틱 처리, 1은 항상 오버커밋, 2는 절대 오버커밋을 의미한다는 것을 이해했습니다.

또한 /proc 파일 시스템, 특히 /proc/sys/vm 디렉토리를 탐색하여 vm.overcommit_memory와 같은 커널 파라미터가 이 가상 파일 시스템 내에서 파일로 어떻게 노출되는지 확인하여 가상 메모리 설정과 관련하여 커널의 현재 상태를 검사하는 다른 방법을 제공했습니다.