Używam skryptu R i jest to naprawdę długa pętla.
Oto zrzut ekranu polecenia „top”. Widać, że mówi, że R używa 100% procesora, ale w górnej linii mówi o 4,2% wykorzystaniu procesów użytkownika. Co to znaczy? Czy to oznacza, że procesor ma wiele rdzeni i używam tylko jednego?
Odpowiedzi:
Po pierwsze, tak - jeśli masz system wielordzeniowy, możesz mieć wiele procesów na 100% (lista procesów pokazuje wykorzystanie teoretycznego pojedynczego rdzenia) lub dla procesów wielowątkowych możesz mieć pojedynczy proces powyżej 100%. Całkowite wykorzystanie procesora może wynosić 25%, 50% itd. - ponieważ domyślnym pierwszym ustawieniem jest to, że pierwsze dane procesora będą agregatem wszystkich procesorów w systemie. Otrzymasz lepszy widok, jeśli naciśniesz
1
z top running - rozdzieli każdy procesor.Mając to na uwadze, istotne są także segmenty us (er), sy (stem), ni (ce) i id (le). Program R nie wydaje się uderzać w procesor w pętli, więc procesor znajduje się głównie w bezczynnym wiadrze. Nie jestem zbyt dobrze zaznajomiony z R - możesz dodać trochę debugowania, aby zobaczyć, na co czeka, jeśli możesz zoptymalizować go, aby lepiej wykorzystać procesor (zakładając, że chcesz, aby był związany z CPU). Podobnie możesz mieć proces uderzający w dysk i mający niski procent użytkownika, ale wysoką wartość Wa (it) podczas oczekiwania na dane strony do / z dysku.
Gdyby R ciągle kręcił się w pętli, wykonując obliczenia / sortowanie lub podobne, powodowałoby to całkowite przesunięcie wykorzystania procesora do wiadra użytkownika (lub, jeśli miło, proces zmieniłby się w ładną łyżkę). Wiadro systemowe może wyświetlać przyrost, jeśli robisz duże skanowanie i sortowanie w pamięci (chociaż wtedy niekoniecznie będzie przypisane do procesu na liście). W tej chwili wygląda na to, że twój system jest lekko załadowany, uruchamiając pętlę prądową.
źródło