Musiałem uruchamiać convert
wiele obrazów jednocześnie. Polecenie zajęło sporo czasu, ale to mi nie przeszkadza.
Problem polega na tym, że to polecenie sprawiło, że mój komputer był bezużyteczny podczas działania polecenia (przez około 15 minut).
Czy możliwe jest ograniczenie przepustowości polecenia poprzez ograniczenie zasobów (procesora i pamięci) do polecenia bezpośrednio z wiersza poleceń? Może to działać tylko wtedy, gdy dodam coś do tej samej linii przed naciśnięciem, Enterponieważ po uruchomieniu procesu komputer spowalnia tak bardzo, że nie można na przykład przełączyć się na „Monitor systemu” i zmniejszyć priorytet.
Edycja: najlepsze i najlepsze wyniki
Udało mi się uruchomić top
i sudo iotop >iotop.txt
wykonując jedną z tych operacji konwersji. (Wytworzony plik iotop.txt jest trudny do odczytania)
Wyniki z góry:
PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND 14275 nazwa użytkownika 20 0 4043m 3,0 g 1448 D 7,0 80,4 0: 16,45 konwersji
Wyniki iotop:
[10 1049h [1; 24r (B [m [4l [7 7h [1 1h = [39; 49m [25 25l [39; 49m (B [m [H [2J Całkowity ODCZYT DYSKU: 1269.04 K / s | Całkowity zapis dysku] : [59G0,00 B / s (B [0; 7m TID PRIO DYSK UŻYTKOWNIKA ODCZYT DYSKU ZAPISZ SWAPIN (B [0; 1; 7m IO> (B [0; 7m POLECENIE [3; 2H (B [m2516 be / 4 nazwa użytkownika 350,08 K / s 0,00 B / s 0,00% 0,00% Zeitgeist-datahub 7394 be / 4 nazwa użytkownika 568,88 K / s 0,00 B / s 77,41% 0,00% - rendere ~ .530483991 [5; 1H14275 bezczynna nazwa użytkownika 350,08 K / s 0,00 B / s 37,49% 0,00% konwersja S ~ f test.pdf [6 ; 2H2048 be / 4 root [6; 24H0,00 B / s 0,00 B / s 0,00% 0,00% [kworker / 3: 2] [5G1 be / 4 root [7; 24H0,00 B / s 0,00 B / s 0,00% 0,00% init
Co więcej, nawet po zakończeniu procesu komputer nie wraca do poprzedniej wydajności. Znalazłem sposób na obejście tego, biegając sudo swapoff -a
za nimsudo swapon -a
źródło
convert *.tif bla.pdf
proces na raz, ale dane wejściowe to cała masa obrazów tif. Jest to sposób na utworzenie jednego pliku PDF z zestawu obrazów, który działa dobrze, ale tłumi mój komputer.find . -iname '*.tif' | xargs -I% convert % %.pdf
zamiastfind . -iname '*.pdf' | xargs -I% convert % %.pdf
. To też było szybsze! Dzięki.-exec
i-execdir
opcjachfind
. W twoim przypadku zamiast używaćxargs
, użyłbym:find -iname '*.tif' -execdir convert {} {}.pdf ';'
man nice
, a jeśli potrzebujesz przepustnicy we / wyman ionice
.Spójrzmy na kilka prostych przykładów.
Ograniczanie użycia procesora:
Jednak z twojego opisu wykorzystanie procesora prawie na pewno nie jest twoim prawdziwym problemem. Bardziej prawdopodobne jest, że masz poważną rywalizację we / wy.
Ograniczanie użycia dysku:
-c2
jest „najlepszym wysiłkiem” i-n7
stanowi najniższy priorytet „najlepszego wysiłku”. Spowoduje to ograniczenie pracy do niższego priorytetu we / wy niż w przypadku większości innych elementów w systemie.-c3
(nie jest wymagany poziom priorytetu) oznacza „Tylko bezczynny”. Zadania ustawione-c3
TYLKO zajmują w przeciwnym razie czas planowania bezczynności dysku, praktycznie nie wpływając w ogóle na system - ale potencjalnie znacznie dłuższy czas wykonywania zadania, w zależności od tego, jak zajęta jest reszta systemu.źródło
nice
z poleceniem konwersji? Jeśli się nie mylę, fajnie działa na już uruchomione procesy.nice -n 20
następnym razem.iotop
podczas uruchamiania procesu? Zwykle pojedynczy proces pochłaniający dużo procesora będzie miał bardzo niewielki wpływ na użyteczność systemu, ale proces przebijający dysk twardy może BARDZO szybko spowolnić wszystko - zwłaszcza jeśli używasz dysku konwencjonalnego, a nie dysku SSD.convert blah.gif blah.jpg & iotop
,iotop
aby uruchomił się natychmiast po rozpoczęciuconvert
pracy.Oto całkiem niezły artykuł na temat używania programu o nazwie
cpulimit
ograniczającego użycie procesora przez dowolny proces:http://maketecheasier.com/limit-cpu-usage-of-any-process-in-linux/2010/09/22
Problem polega na tym, że powiedziałeś o znalezieniu PID
convert
procesu po jego rozpoczęciu.Po uruchomieniu,
convert
jeśli nadal możesz wpisywać polecenia w terminalu, możesz uruchomić,ps aux | grep convert
aby znaleźć jego PID, a następniesudo cpulimit -p PID -l CPU%
rozpocząć dławienie.Lub jeśli uruchomienie
convert
również blokuje terminal, artykuł pokazuje, w jaki sposób można uruchomićcpulimit
jako demon w tle, który automatycznie monitoruje i dławi wszelkie procesy przy określonym zużyciu procesora. Powodzenia!źródło
nice
polecenia.cpulimit
ograniczy proces do pewnego% użycia procesora, niezależnie od tego, czy cokolwiek innego potrzebuje czasu procesora;nice
, przeciwnie, ustala poziomy priorytetów (40 ogółem!), które umożliwiają ustalenie priorytetów jednego zadania powyżej (lub poniżej) innych.