모든 TCP/IP 조정 매개변수는 /proc/sys/net/ 디렉토리에 있습니다. 예를 들어, 다음은 가장 중요한 조정 매개변수 중 일부와 그 의미입니다.
1. /proc/sys/net/core/rmem_max — 최대 TCP 데이터 수신 버퍼
2. /proc/sys/net/core/wmem_max — 최대 TCP 데이터 전송 버퍼
3. /proc/sys/net/ipv4/tcp_timestamps — 타임스탬프가 TCP 헤더에 12바이트씩 추가됩니다(RFC 1323 참조).
4. /proc/sys/net/ipv4/tcp_sack — 선택적 응답
5. /proc/sys/net/ipv4/tcp_window_scaling — 더 큰 TCP 창을 지원합니다. 최대 TCP 창이 65535(64K)를 초과하는 경우 이 값을 1로 설정해야 합니다.
6. rmem_default — 기본 수신 창 크기
7. rmem_max - 수신 창의 최대 크기
8. wmem_default — 기본 전송 창 크기
9. wmem_max - 전송 창의 최대 크기
/proc 디렉토리의 모든 내용은 임시이므로 시스템을 다시 시작하면 모든 변경 사항이 손실됩니다.
시스템이 시작될 때 TCP/IP 매개변수를 자동으로 수정하는 것이 좋습니다.
/etc/rc.local 파일에 다음 코드를 추가한 후 파일을 저장합니다. 시스템이 재부팅되면 다음 TCP/IP 매개변수가 자동으로 수정됩니다.
에코 256960 > /proc/sys/net/core/rmem_default
에코 256960 > /proc/sys/net/core/rmem_max
에코 256960 > /proc/sys/net/core/wmem_default
에코 256960 > /proc/sys/net/core/wmem_max
에코 0 > /proc/sys/net/ipv4/tcp_timestamps
에코 1 > /proc/sys/net/ipv4/tcp_sack
에코 1 > /proc/sys/net/ipv4/tcp_window_scaling
TCP/IP 매개변수는 설명이 필요하며, TCP 창 크기는 256960으로 설정되고, TCP 타임스탬프는 비활성화되고(각 패킷 헤더에 12바이트 추가 취소), 더 큰 TCP 창과 TCP 선택 응답이 지원됩니다.
위 값은 인터넷 연결 및 최대 대역폭/지연률을 기준으로 설정됩니다.
참고: 위 예의 값은 실제로 사용될 수 있지만 매개변수의 일부만 포함되어 있습니다.
또 다른 방법: /etc/sysctl.conf를 사용하여 시스템 시작 시 설정한 값으로 매개변수를 구성합니다.
net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
------------------------------------- ---------------
/proc/sys/fs/슈퍼-맥스
이 파일은 슈퍼블록 핸들러의 최대 수를 지정합니다. 마운트된 모든 파일 시스템에는 슈퍼블록을 사용해야 하므로, 많은 수의 파일 시스템이 마운트되면 슈퍼블록 핸들러가 소진될 수 있습니다.
기본 설정: 256
/proc/sys/fs/super-nr
이 파일은 현재 할당된 슈퍼블록의 수를 보여줍니다. 이 파일은 읽기 전용이며 정보 표시에만 사용됩니다.
/proc/sys/커널
/proc/sys/kernel/acct
이 파일에는 로그가 포함된 파일 시스템의 여유 공간(백분율로 표시)을 기준으로 프로세스 계산이 시작되는 시점을 제어하는 세 가지 구성 가능한 값이 있습니다.
여유 공간이 이 백분율 값 아래로 떨어지면 프로세스 계산을 중지합니다.
여유 공간이 이 백분율 값보다 높으면 프로세스 계산을 시작합니다.
위의 두 값을 확인하는 빈도(초)
이 파일의 값을 변경하려면 공백으로 구분된 일련의 숫자가 반환되어야 합니다.
기본 설정: 2 4 30
이러한 값을 사용하면 저널이 포함된 파일 시스템의 여유 공간이 2% 미만인 경우 어카운팅이 중지되고, 여유 공간이 4% 이상인 경우 다시 어카운팅이 시작됩니다. 확인은 30초마다 수행됩니다.
/proc/sys/kernel/ctrl-alt-del
이 파일에는 ctrl+alt+delete 키 조합을 수신할 때 시스템이 반응하는 방식을 제어하는 이진 값이 있습니다. 이 두 값은 다음을 나타냅니다.
값 0은 ctrl+alt+delete가 캡처되어 init 프로그램으로 전송된다는 의미입니다. 이렇게 하면 마치 shutdown 명령을 입력한 것처럼 시스템이 정상적으로 종료되고 다시 시작될 수 있습니다.
값 1은 ctrl+alt+delete가 캡처되지 않고 마치 전원이 직접 꺼진 것처럼 완전 종료가 수행되지 않음을 의미합니다.
기본 설정: 0
/proc/sys/kernel/도메인이름
이 파일을 사용하면 네트워크 도메인 이름을 구성할 수 있습니다. 기본값이 없습니다. 도메인 이름이 설정되었을 수도 있고 설정되지 않았을 수도 있습니다.
/proc/sys/kernel/호스트 이름
이 파일을 사용하면 네트워크 호스트 이름을 구성할 수 있습니다. 기본값이 없으며 호스트 이름이 설정되거나 설정되지 않았을 수 있습니다.
/proc/ss/kernel/msgmax
이 파일은 한 프로세스에서 다른 프로세스로 전송되는 메시지의 최대 길이를 지정합니다. 프로세스 간 메시지 전달은 커널 메모리에서 발생하며 디스크로 스왑되지 않으므로 이 값을 늘리면 운영 체제에서 사용하는 메모리 양이 늘어납니다.
기본 설정: 8192
/proc/sys/kernel/msgmnb
이 파일은 메시지 대기열의 최대 바이트 수를 지정합니다.
기본 설정: 16384
/proc/sys/kernel/msgmni
이 파일은 최대 메시지 큐 ID 수를 지정합니다.
기본 설정: 16
/proc/sys/kernel/panic
이 파일은 "커널 패닉"이 발생할 경우 재부팅하기 전에 커널이 기다리는 시간(초)을 나타냅니다. 0초로 설정하면 커널 패닉 발생 시 재부팅이 비활성화됩니다.
기본 설정: 0
/proc/sys/kernel/printk
이 파일에는 중요도에 따라 로깅 메시지가 전송되는 위치를 정의하는 4개의 숫자 값이 있습니다. 다양한 로그 수준에 대한 자세한 내용은 syslog(2) 맨페이지를 참조하십시오. 이 파일의 네 가지 값은 다음과 같습니다.
콘솔 로그 수준: 이 값보다 우선순위가 높은 메시지는 콘솔에 인쇄됩니다.
기본 메시지 로깅 수준: 우선순위가 없는 메시지는 이 우선순위로 인쇄됩니다.
최소 콘솔 로그 레벨: 콘솔 로그 레벨을 설정할 수 있는 최소값(우선순위가 가장 높음)
기본 콘솔 로그 수준: 콘솔 로그 수준의 기본값입니다.
기본 설정: 6 4 1 7
/proc/sys/kernel/shmall
이 파일은 특정 순간에 시스템에서 사용할 수 있는 공유 메모리의 총량(바이트)입니다.
기본 설정: 2097152
/proc/sys/kernel/shmax
이 파일은 커널이 허용하는 공유 메모리 세그먼트의 최대 크기(바이트)를 지정합니다.
기본 설정: 33554432
/proc/sys/kernel/shmmni
이 파일은 전체 시스템에 사용되는 공유 메모리 세그먼트의 최대 수를 나타냅니다.
기본 설정: 4096
/proc/sys/kernel/sysrq
이 파일에 지정된 값이 0이 아닌 경우 시스템 요청 키가 활성화됩니다.
기본 설정: 0
/proc/sys/kernel/threads-max
이 파일은 커널이 사용할 수 있는 최대 스레드 수를 지정합니다.
기본 설정: 2048
/proc/sys/net
/proc/sys/net/core/message_burst
새로운 경고 메시지를 작성하는 데 필요한 시간(1/10초), 이 시간 동안 수신된 다른 경고 메시지는 삭제됩니다. 이는 시스템에 메시지가 "폭주"되도록 시도하는 누군가가 사용하는 서비스 거부 공격을 방지하는 데 사용됩니다.
기본 설정: 50(5초)
/proc/sys/net/core/message_cost
이 파일에는 각 경고 메시지와 관련된 비용 값이 들어 있습니다. 값이 클수록 경고 메시지가 무시될 가능성이 높아집니다.
기본 설정: 5
/proc/sys/net/core/netdev_max_backlog
이 파일은 인터페이스가 커널이 처리할 수 있는 것보다 더 빠르게 패킷을 수신할 때 대기열에 들어갈 수 있는 최대 패킷 수를 지정합니다.
기본 설정: 300
/proc/sys/net/core/optmem_max
이 파일은 각 소켓에 허용되는 최대 버퍼 크기를 지정합니다.
/proc/sys/net/core/rmem_default
이 파일은 수신 소켓 버퍼 크기의 기본값을 바이트 단위로 지정합니다.
/proc/sys/net/core/rmem_max
이 파일은 최대 수신 소켓 버퍼 크기를 바이트 단위로 지정합니다.
/proc/sys/net/core/wmem_default
이 파일은 송신 소켓 버퍼 크기의 기본값을 바이트 단위로 지정합니다.
/proc/sys/net/core/wmem_max
이 파일은 최대 송신 소켓 버퍼 크기를 바이트 단위로 지정합니다.
/proc/sys/net/ipv4
모든 IPv4 및 IPv6 매개변수는 커널 소스 코드 문서에 문서화되어 있습니다. /usr/src/linux/Documentation/networking/ip-sysctl.txt 파일을 참조하십시오.
/proc/sys/net/ipv6
IPv4와 동일합니다.
/proc/sys/vm
/proc/sys/vm/buffermem
이 파일은 버퍼 메모리에 사용되는 전체 시스템 메모리의 양(백분율로 표시)을 제어합니다. 여기에는 공백으로 구분된 일련의 숫자를 파일에 기록하여 설정되는 세 가지 값이 있습니다.
버퍼에 사용되는 메모리의 최소 비율
시스템 메모리가 많이 남아 있지 않고 시스템 메모리가 줄어들고 있는 상황이 발생하면 시스템은 버퍼 메모리 양을 유지하려고 시도합니다.
버퍼에 사용되는 최대 메모리 비율
기본 설정: 2 10 60
/proc/sys/vm/freepages
이 파일은 시스템이 사용 가능한 메모리의 다양한 수준에 응답하는 방식을 제어합니다. 여기에는 공백으로 구분된 일련의 숫자를 파일에 기록하여 설정되는 세 가지 값이 있습니다.
커널은 시스템에서 사용 가능한 페이지 수가 최소 제한에 도달한 경우에만 일부 메모리를 할당할 수 있습니다.
시스템의 사용 가능한 페이지 수가 이 제한 아래로 떨어지면 커널은 메모리를 확보하고 시스템 성능을 유지하기 위해 보다 공격적인 방식으로 스와핑을 시작합니다.
커널은 이 양의 시스템 메모리를 사용 가능한 상태로 유지하려고 시도합니다. 이 아래의 값은 커널 스와핑을 활성화합니다.
기본 설정: 512 768 1024
/proc/sys/vm/kswapd
이 파일은 커널이 메모리를 스왑하는 방법을 제어합니다. 여기에는 공백으로 구분된 일련의 숫자를 파일에 기록하여 설정되는 세 가지 값이 있습니다.
커널이 한 번에 해제하려고 시도하는 최대 페이지 수입니다. 메모리 교환 중에 대역폭을 늘리려면 이 값을 늘려야 합니다.
커널이 스왑당 페이지를 해제하려고 시도하는 최소 횟수입니다.
한 번의 스왑에서 커널이 쓴 페이지 수입니다. 이는 시스템 성능에 가장 큰 영향을 미칩니다. 이 값이 클수록 더 많은 데이터가 교환되고 디스크 검색에 소요되는 시간이 줄어듭니다. 그러나 값이 너무 크면 요청 큐가 "플러딩"되어 시스템 성능에 부정적인 영향을 미칠 수 있습니다.
기본 설정: 512 32 8
/proc/sys/vm/페이지캐시
이 파일은 /proc/sys/vm/buffermem과 동일한 작업을 수행하지만 파일의 메모리 맵이자 일반 캐시입니다.
커널 설정을 지속적으로 유지
/proc/sys 디렉토리의 커널 매개변수를 변경하기 위한 편리한 유틸리티가 여기에 제공됩니다. 이를 통해 실행 중인 커널을 변경할 수 있지만(위에서 사용된 에코 및 리디렉션 방법과 유사) 시스템 부팅 시 실행되는 구성 파일도 있습니다. 이를 통해 실행 중인 커널을 변경하고 해당 변경 사항을 구성 파일에 추가하여 시스템 재부팅 후에도 유지되도록 할 수 있습니다.
이 유틸리티는 sysctl이라고 하며 sysctl(8) 맨페이지에 자세히 설명되어 있습니다. sysctl의 구성 파일은 /etc/sysctl.conf이며, sysctl.conf(8)에서 편집하고 기록할 수 있습니다. sysctl은 /proc/sys 아래의 파일을 변경할 수 있는 개별 변수로 처리합니다. 따라서 /proc/sys 아래의 /proc/sys/fs/file-max 파일을 예로 들면 시스템에서 허용되는 최대 파일 핸들 수를 나타냅니다. 이 파일은 fs.file-max로 표시됩니다.
이 예는 sysctl 표기법에 대한 몇 가지 놀라운 사실을 보여줍니다. sysctl은 /proc/sys 디렉터리의 변수만 변경할 수 있고 사람들은 항상 변수가 이 디렉터리에 있다고 생각하기 때문에 변수 이름 중 해당 부분(/proc/sys)은 생략됩니다. 주목해야 할 또 다른 변경 사항은 디렉터리 구분 기호(슬래시 /)를 영어 마침표(점)로 대체한 것입니다.
/proc/sys의 파일을 sysctl의 변수로 변환하는 두 가지 간단한 규칙이 있습니다.
앞부분 /proc/sys를 제거합니다.
파일 이름의 슬래시를 점으로 변경합니다.
이 두 가지 규칙을 사용하면 /proc/sys의 모든 파일 이름을 sysctl의 모든 변수 이름으로 변환할 수 있습니다. 파일에서 변수로의 일반적인 변환은 다음과 같습니다.
/proc/sys/dir/file --> dir.file
dir1.dir2.file --> /proc/sys/dir1/dir2/file
sysctl -a 명령을 사용하면 변경할 수 있는 모든 변수와 해당 변수의 현재 설정을 볼 수 있습니다.
변수는 위에서 사용된 echo 메소드와 똑같은 작업을 수행하는 sysctl을 사용하여 변경할 수도 있습니다. 그 표현은 다음과 같습니다:
sysctl -w dir.file="값"
file-max를 다시 예시로 사용하여 다음 두 가지 방법 중 하나를 사용하여 값을 16384로 변경합니다.