Czy jest jakieś narzędzie do ograniczenia przepustowości sieci procesu po jego uruchomieniu? Prosty przykład: zauważasz, że użytkownik bierze całą przepustowość przesyłania za pomocą scp i chcesz ograniczyć szybkość lub zmniejszyć priorytet transferu.
Myślę, że mógłbym to zrobić za pomocą kombinacji iptables / tc lub pf, ale zastanawiałem się, czy jest dostępne narzędzie „one-shot” (jak struga z opcją --pid ^^)?
Odpowiedzi:
Niestety nie ma takiego rozwiązania dla FreeBSD. Istnieje wiele rozwiązań, takich jak dummynet / ipfw lub altq / pf, które służą do ograniczania wykorzystania sieci na podstawie różnych wzorców, ale nie na pidach.
W systemie Linux istnieje sposób ograniczenia użycia sieci na podstawie użytkownika:
Myślę, że nie ma rozwiązania ograniczającego wykorzystanie sieci na podstawie pid.
źródło
Proces pobierania portów sieciowych, z których korzysta procesor. Kiedy już wiesz, które porty są używane, możesz użyć reguł IPTABLES, aby ograniczyć te porty. Artykuły te powinny dać ci lepszy pomysł: http://linux-ip.net/articles/Traffic-Control-HOWTO/ http://blog.edseek.com/~jasonb/articles/traffic_shaping/ http: // wiki. sun.com/pages/viewpage.action?pageId=49906332
źródło
W Linuksie nawet kombinacja iptables i tc może być trudnym problemem, ponieważ opcja „--pid-owner” została porzucona z modułu iptables „właściciela” (patrz uwaga poniżej tabeli tutaj ). W rzeczywistości tylko to skojarzenie (pakiet - proces) wydaje się być skomplikowane, podczas gdy my możemy łatwo zrobić resztę, tj. Dość skutecznie filtrować i ograniczać pakiety.
źródło
Nie sądzę, że istnieje gotowe rozwiązanie tego problemu. Ale używając standardowych narzędzi Linuksa możesz zhakować skrypt, który to zrobi.
Po pierwsze, możesz uzyskać listę wszystkich połączeń określonego procesu za pomocą lsof. Następnie możesz utworzyć zasady wejściowe za pomocą tc dla tych połączeń.
źródło
Zasadniczo, jeśli spowolnisz ten proces do +20, wtedy wszystko inne uruchomione w systemie otrzyma priorytet, a zadanie zostanie zaplanowane rzadziej, więc będzie trudniej zapełnić bufory lub pakiety procesów, co powinno prowadzić do niektórych TCP dławienie. Będzie to sporadyczne, ale może pomóc.
źródło