Mam wysoką IO stat. Wysoka pisze. Ale jakie pliki są zapisywane?

15
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          11.50    0.02    5.38    0.07    0.00   83.04

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdc               0.01    89.92    0.26   41.59     3.36   457.19    22.01     0.23    5.60   0.09   0.38
sdb               0.10    15.59    0.40   14.55     8.96   120.57    17.33     0.04    2.91   0.07   0.11
sda               0.13    45.37    0.96    8.09    20.06   213.56    51.63     0.02    2.64   0.16   0.14
sde               0.01    31.83    0.09   11.34     0.94   103.56    18.29     0.04    3.52   0.14   0.16
sdd               0.01    48.01    0.13   19.81     1.58   202.16    20.44     0.11    5.62   0.13   0.25

Czy istnieje sposób, aby dowiedzieć się, jakie pliki są zapisywane? 457 kB / s

Również ta inna maszyna linuxowa ma ten sam problem.

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          20.50    0.00   46.48   20.74    0.00   12.28

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.17    11.61    0.99    3.51    36.65    59.43    42.70     0.10   23.20   3.84   1.73
sdb               0.55   224.18   24.30   97.45   246.48  1287.12    25.19     3.96   32.53   7.88  95.91
sdd               0.53   226.75   25.56   90.96   283.50  1271.69    26.69     3.43   29.44   8.22  95.75
sdc               0.00     1.76    0.28    0.06     4.73     7.26    70.41     0.00   12.00   2.12   0.07
dm-0              0.00     0.00    1.11   14.77    36.41    58.92    12.01     1.00   62.86   1.09   1.74
dm-1              0.00     0.00    0.04    0.12     0.17     0.49     8.00     0.00   21.79   2.47   0.04
dm-2              0.00     0.00    0.01    0.00     0.05     0.01     8.50     0.00    7.90   2.08   0.00

1200 żądań zapisu na sekundę dla serwera, który nic nie obsługuje

użytkownik4951
źródło

Odpowiedzi:

8

Możesz wypróbować następujące polecenia, które działały dla mnie w RHEL6:

1) Bez względu na to, jakie urządzenie widzisz na wyjściu „iostat” wykonującym więcej operacji we / wy, użyj go z fusernastępującą komendą:

fuser -uvm device

2) Otrzymasz listę procesów z nazwą użytkownika powodującą więcej operacji we / wy. Wybierz PIDS i użyj go w lsofpoleceniu w następujący sposób:

lsof -p PID | more

3) Otrzymasz listę plików / katalogów wraz z użytkownikiem wykonującym maksymalną liczbę operacji we / wy.

Ravi Trivedi
źródło
root @ host [~] # fuser -uv / home4 root @ host [~] # fuser -uvm / home4 PAND ACCESS COMMAND / home4: newgames 18297 ..c .. (newgames) php cuntschi 18407 ..c .. ( cuntschi) php newgames 18457 ..c .. (newgames) php
user4951
5

Wygląda na to, że nie ma narzędzi do sprawdzania przepustowości we / wy dla pliku innego niż proces przetwarzający plik. Istnieją jednak sposoby na sprawdzenie przepustowości procesu we / wy.

iotop - Jest to narzędzie typu top / iftop, które pokazuje przepustowość operacji we / wy.

Po wskazaniu pinów, który proces ma intensywne operacje we / wy, użyj następującego, aby dowiedzieć się, który plik jest używany

lsof -c <process name>

To powinno zawęzić zakres i pomóc precyzyjnie wskazać źródło.

John Siu
źródło
jak uzyskać proces? Lsof też nic nie produkuje. Coś pisze tak wiele rzeczy i nie wiem co
4951
Przepraszam, wstawiłem niewłaściwe narzędzie io. To powinno być iotop, nie iostat. Poprawiłem swoją odpowiedź.
John Siu,
(1) Czy możesz również zaktualizować jaką dystrybucję (redhat / centos / ubuntu ...) używasz? (2) Czy to nowa instalacja? (3) Udostępnianie plików, takie jak uruchomiona samba?
John Siu,
3

Możesz użyć inotifywaitz, inotify-toolsaby dowiedzieć się dokładnie, do którego pliku jest zapisywany. Nie powie ci to, ile danych jest zapisywanych, ale przynajmniej powie ci, do jakich plików są zapisywane.

Na przykład to polecenie wydrukuje nazwę pliku, gdy tylko zostaną utworzone, zmodyfikowane lub usunięte w /tmp:

$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /tmp
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/tmp/ CREATE test
/tmp/ MODIFY test

Niestety musisz zgadnąć, w którym katalogu znajdują się zapisywane pliki. Nie powiedzie się to, jeśli spróbujesz użyć go w katalogu głównym, choć najwyraźniej można to zmienić:

$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /
Setting up watches.  Beware: since -r was given, this may take a while!
Failed to watch /; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via `/proc/sys/fs/inotify/max_user_watches'.
przyznaje
źródło
2

Użyj systemtap, aby monitorować każde wywołanie systemowe zapisu / zapisu. Możesz zrobić księgowość i zobaczysz, który plik / fd ma najwięcej bajtów.

Erben Mo
źródło