Na komputerze z systemem CentOS 5.5 z jądrem Linux w wersji 2.6.18-194.26.1.el5 zauważyłem, że posix_fadvise (WILLNEED) sprawia, że czytanie plików 60K jest znacznie wolniejsze niż zwykłe IO o prawie 200%.posix_fadvise (WILLNEED) spowalnia działanie IO?
Wygląda na to, że faktyczne wywołanie fadvise jest synchroniczne, a także opóźnia planowanie innych wątków w aplikacji, które używają danych odczytywanych z plików.
Czy to możliwe, że jądro jest zajęte przez pobieranie danych z dysków z powodu wywołania funkcji fadvise i kończy opóźnianie innego zaplanowanego zadania? Wygląda to wbrew oczekiwanemu asynchronicznemu zachowaniu wstępnemu, którego oczekujemy od wykonania wywołania fadvise.
Moje pytanie brzmi: czy są jakieś dostrajalne parametry jądra, które mogłyby zostać użyte do wymuszenia asynchronicznego zachowania dla posix_fadvise (WILLNEED)? Jak zwiększenie wątków IO jądra, pamięć podręczna stron?
Dzięki za odpowiedź. Odpowiedź podana w odsyłaczu nawiązuje do liczby żądań IO obsługiwanych w jądrze. Czy to konfigurowalny numer? Jeśli system ma dużo zasobów, zwiększenie tej kolejki może pomóc zredukować efekt synchronicznego zachowania ... – Specksynder
['nr_requests' na kolejkę, aby można było go dostroić] (https://www.kernel.org/doc/Documentation /block/queue-sysfs.txt). Nie jestem pewien, od czego to się zaczęło. – sourcejedi