gc_thresh 커널 구성 문제

gc_thresh 커널 구성 문제

데이터 센터의 커널 로그에 문제가 있습니다.

arp_cache: neighbor table overflow!

이는 가십 프로토콜을 사용하고 arp 캐시를 "플러딩"하는 모든 서버에 영사를 두는 것과 관련이 있습니다. 약 300명의 회원이 있기 때문에 플러딩을 자유롭게 사용하고 있지만 이는 기본 gc_thresh3 제한보다 훨씬 낮으며 주어진 시간에 그 중 25명만 볼 수 있습니다. 모든 서버에서 다음 설정을 모두 두 배로 늘렸습니다.

gc_thresh1 (Linux 2.2부터) ARP 캐시에 보관할 최소 항목 수입니다. 캐시에 이 항목 수보다 적은 경우 가비지 수집기가 실행되지 않습니다. 기본값은 128입니다.

gc_thresh2 (Linux 2.2부터) ARP 캐시에 보관할 소프트 최대 항목 수입니다. 가비지 수집기는 수집을 수행하기 전에 5초 동안 항목 수가 이 값을 초과하도록 허용합니다. 기본값은 512입니다.

gc_thresh3 (Linux 2.2부터) ARP 캐시에 보관할 최대 항목 수를 지정합니다. 캐시의 항목 수가 이 수를 초과하면 가비지 수집기가 항상 실행됩니다. 기본값은 1024입니다.

이로 인해 문제가 해결되었지만 이유를 모르겠습니다. 왜냐하면 arp -n을 실행하면 gc_thresh3에 도달하는 데 필요한 1024개 항목 근처에도 없기 때문입니다. 커널 버전의 코드를 살펴보았습니다.

https://github.com/torvalds/linux/blob/31cc088a4f5d83481c6f5041bd6eb06115b974af/net/core/neighbour.c#L388

이는 문서와 일치하는 단순한 증분처럼 보이지만 제한 이전에 제거되고 위의 오류 메시지가 표시됩니다. 내가 이해하지 못하는 부분이나 내 분석이 어떻게 잘못되었는지 알려줄 수 있는 사람이 있나요? 이를 파악하여 이를 적절하게 설정하는 방법을 계획할 수 있도록 하고 싶습니다. 미리 감사드립니다!

관련 정보