![cgroup 간에 공정한 대역폭 공유를 구성하는 방법은 무엇입니까?](https://linux55.com/image/2150/cgroup%20%EA%B0%84%EC%97%90%20%EA%B3%B5%EC%A0%95%ED%95%9C%20%EB%8C%80%EC%97%AD%ED%8F%AD%20%EA%B3%B5%EC%9C%A0%EB%A5%BC%20%EA%B5%AC%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
tc
SFQ(Random Fair Queuing)를 사용하면 공정한 대역폭 공유를 구성하는 것이 매우 쉽습니다.흐름, 그러나 애플리케이션은 여러 스트림을 열고 가져올 수 있습니다.불공정한 대역폭 공유. 서로 공정한 대역폭 공유를 구성하는 것이 가능합니까?애플리케이션대신에?
각 애플리케이션을 cgroup으로 그룹화하는 것은 분명한 첫 번째 단계처럼 보입니다. SFQ가 클래스 ID 해싱을 지원하는 경우 tc filter
각 cgroup에 클래스 ID를 쉽게 할당할 수 있습니다. 불행하게도 SFQ는 이를 지원하지 않는 것 같습니다. 또 다른 유망한 접근 방식은 카테고리 전반에 걸쳐 가중치 주기를 수행하는 CBQ를 사용하는 것입니다. 불행히도 가중치를 모두 동일하게 만드는 것은 작동하지 않는 것 같습니다.
cgroup 간에 대역폭을 공정하게 공유하는 또 다른 방법이 있습니까?
답변1
net_cls cgroup 컨트롤러를 확인하십시오. 기본적으로 특수 태그( /mntpoint/net_cls.classid
해당 cgroup의 애플리케이션과 연결된 소켓에서 시작되는 모든 패킷에 정의됨)를 추가합니다. 나중에 classid
qdisc에 연결된 필터에서 이 "태그"를 사용하여 트래픽이 발생하는 cgroup을 기반으로 다양한 클래스에 트래픽을 전달할 수 있습니다.
이 주제에 관해 내가 찾은 유일한 문서는 다음과 같습니다.일부 Red Hat 슬라이드[Google을 통한 HTML].