태그 보관물: bandwidth-control

bandwidth-control

이미 시작된 프로세스의 네트워크 처리량 제한? (리눅스 / FreeBSD) : 사용자는 scp를 사용하여 모든 업로드 대역폭을

프로세스가 시작된 후 프로세스의 네트워크 처리량을 제한하는 유틸리티가 있습니까? 간단한 예 : 사용자는 scp를 사용하여 모든 업로드 대역폭을 사용하며 전송 속도를 제한하거나 전송 우선 순위를 낮추고 싶습니다.

나는 그것을 달성하기 위해 iptables / tc 또는 pf의 조합을 사용할 수 있다고 생각하지만 “one-shot”도구가 있는지 궁금합니다.



답변

불행히도 FreeBSD에는 그러한 해결책이 없습니다. dummynet / ipfw 또는 altq / pf와 같은 많은 솔루션이 있지만 다른 패턴을 기반으로 네트워크 사용량을 제한하는 데 사용되지만 pid는 아닙니다.

리눅스에는 사용자별로 네트워크 사용을 제한하는 방법이 있습니다 :

iptables -t mangle -A OUTPUT -p tcp -m owner --uid-owner test -j MARK --set-mark 1

pid를 기반으로 네트워크 사용률을 제한하는 솔루션이 없다고 생각합니다.


답변

프로세스가 사용중인 네트워크 포트를 가져 오는 프로세스. 사용중인 포트를 알고 있으면 IPTABLES 규칙을 사용하여 이러한 포트를 제한 할 수 있습니다. 이 기사는 http://linux-ip.net/articles/Traffic-Control-HOWTO/
http://blog.edseek.com/~jasonb/articles/traffic_shaping/
http : // wikis에 대한 더 나은 아이디어를 제공합니다
. sun.com/pages/viewpage.action?pageId=49906332


답변

은 “–pid 소유자”옵션이 “소유자”의 iptables 모듈에서 포기 된 이후 리눅스에서 iptables에와 TC의 경우에도 조합 (아래 표 참고를 참조 어려운 문제가 될 수 여기 ). 실제로이 연관 (패킷-프로세스) 만 복잡해 보이지만 나머지는 쉽게 수행 할 수 있습니다 (예 : 패킷 필터링 및 제한).


답변

나는 이것에 대한 준비된 해결책이 없다고 생각한다. 그러나 표준 Linux 도구를 사용하면 작업을 수행하는 스크립트를 해킹 할 수 있습니다.

먼저 lsof를 사용하여 특정 프로세스의 모든 연결 목록을 얻을 수 있습니다. 그런 다음 해당 연결에 대해 tc를 사용하여 수신 정책을 만들 수 있습니다.


답변

결정적으로 프로세스를 +20으로 낮추면 시스템에서 실행되는 다른 작업의 우선 순위가 높아지고 작업이 덜 자주 예약되므로 버퍼 또는 프로세스 패킷을 채우기가 더 어려워 TCP가 발생합니다. 조절. 산발적이지만 충분히 도움이 될 수 있습니다.

# renice 20 -p $pid


답변