Bycie „miłym” z I / O: ograniczanie zasobów I / O procesów w * nix

6

Pracuję na dużym udostępnionym serwerze Ubuntu i denerwuję moich kolegów. Jednym z moich procesów jest tworzenie wielu wstawek do bazy danych MySQL i zapychanie całego serwera.

MySQL nie zużywa dużo zasobów procesora ani pamięci RAM. Gdyby tak było, mógłbym użyć narzędzi „nice” i „ulimit” do dławienia procesu (w rzeczywistości używam nicea na MySQL i to nie pomaga). Zamiast tego wydaje się, że MySQL wykonuje wiele losowych operacji odczytu i zapisu na dysku, a więc za każdym razem, gdy ktoś chce odczytać lub zapisać plik z dysku, musi odczekać sekundę lub dwie, co jest niedopuszczalne do użytku interaktywnego.

Wszelkie przemyślenia na temat tego, co mogę zrobić, aby ograniczyć dyskowe operacje we / wy MySQL? (Szukam rozwiązania na poziomie systemu operacyjnego lub jądra, a nie sugestii zmiany konfiguracji sprzętowej mojego systemu).

To, czego potrzebuję, jest dobrze opisane na tablicy ogłoszeń tutaj .

Conradlee
źródło

Odpowiedzi:

5

ionice(część util-linux ) może regulować priorytet I / O procesu, pozwalając wybrać pomiędzy bezczynnością, 8 „najlepszymi wysiłkami” i 8 poziomami priorytetów w czasie rzeczywistym. Klasa 3 jest „bezczynna”:

ionice -c 3 -p $(pgrep -x mysqld)

schedtool może dostosować ogólne zasady planowania, znów „bezczynność” jest jedną z opcji:

schedtool -D $(pgrep -x mysqld)
grawitacja
źródło