/proc/net/tcp를 읽는 데 시간이 오래 걸리는 이유는 무엇입니까? ss는 연결 테이블에 대해 동일한 종류의 데이터를 빠르게 반환합니까?

/proc/net/tcp를 읽는 데 시간이 오래 걸리는 이유는 무엇입니까? ss는 연결 테이블에 대해 동일한 종류의 데이터를 빠르게 반환합니까?

Linux 2.6.32에서 로드가 매우 많은 시스템(예: 웹 서버)에서 /proc/net/tcp를 읽는 경우(예: cat) 100K 항목을 읽는 데 30초 이상이 걸립니다. 오랜만이네요.

뒤에서 무슨 일이 벌어지고 있는 걸까요? 잠금이 진행되고 있나요?

많은 사람들이 'ss' 명령의 속도를 언급합니다. 'cat /proc/net/tcp' 또는 'netstat'이 수행하지 않는 'ss' 명령은 무엇 때문에 훨씬 더 빨라지나요?

답변1

ss소켓 계층을 사용하여 AF_NETLINK커널과 대화합니다. 이는 낮은 수준의 프로토콜이지만 데이터를 매우 빠르고 큰 단위로 전송할 수 있습니다. CentOS 7에 대한 빠른 설명은 strace전송 창을 1Mb로 설정한다는 것을 보여줍니다.

관련 정보