Rozwiązanie społecznościowe

searchd w ZimaOS wykorzystuje 100% procesora po przesłaniu dużego pliku: poprawka w wersji 1.3.2 i sposób, w jaki obecnie harmonogram wyszukiwania zarządza indeksowaniem

A January-February 2025 ZimaOS thread where searchd stayed at 100% CPU for hours or days after a large file transfer. IceWhale first explained that Files search required indexing, then identified an occasional pagination-logic corner case, fixed it in 1.3.2-beta2, added idle service folding, moved content indexing to midnight at low resource use, and documented how to disable search.

Pierwotne zachowanie powodujące wysokie użycie procesora nie sprowadzało się do tego, że „zwykłe indeksowanie może trwać bez końca”. Po przesłaniu dużej liczby plików proces searchd przez wiele godzin utrzymywał użycie procesora na poziomie 100% — niektórzy użytkownicy zgłaszali, że trwało to nawet kilka dni — podnosząc temperaturę systemu i zmuszając ich do wyboru między wyłączeniem wyszukiwania a pozostawieniem procesora pod dużym obciążeniem.

IceWhale podało później precyzyjne wyjaśnienie: sporadyczny szczególny przypadek w logice stronicowania mógł powodować długotrwały problem z użyciem procesora. Naprawiono go i zoptymalizowano w wersji ZimaOS 1.3.2-beta2. Ta sama aktualizacja dodała usypianie silnika wyszukiwania po okresie bezczynności, zapewniła aktualność indeksu nazw plików w czasie rzeczywistym i przeniosła indeksowanie zawartości plików na północ, ograniczając zużycie zasobów. Dokumentacja aktualnej wyszukiwarki ZimaOS została później rozszerzona o jawne ograniczanie obciążenia oraz znacznie mniejsze zużycie pamięci i mniej usług w stanie bezczynności.

Monitor systemu ZimaOS pokazujący, że proces searchd zużywa 100 procent mocy procesora po przesłaniu dużej liczby plików
Monitor systemu źródłowego pokazuje, że proces searchd nadal intensywnie używał procesora, mimo że transfer już się zakończył.

Wyszukiwanie wymaga indeksu

Zima-Giorgio początkowo wyjaśnił, że funkcja wyszukiwania plików musi je indeksować. To było prawdą, ale nie tłumaczyło, dlaczego użycie procesora utrzymywało się na maksymalnym poziomie przez wyjątkowo długi czas.

IceWhale później wskazało szczególny przypadek w logice stronicowania

11 lutego 2025 r. orca-zhang napisał, że długotrwały problem z użyciem procesora mógł sporadycznie wynikać z błędu logiki stronicowania oraz że problem naprawiono i zoptymalizowano w wersji 1.3.2-beta2.

To najmocniejszy wniosek ze źródeł i powinien zastąpić wcześniejsze nieprecyzyjne wyjaśnienie „trwa indeksowanie”.

W wersji 1.3.2 dodano usypianie nieaktywnej usługi wyszukiwania

IceWhale poinformowało, że gdy wyszukiwanie nie było potrzebne, proces searchd był zwalniany po około trzech minutach bezczynności, pozostawiając jedynie lekką usługę zimaos-search, zużywającą mniej niż 100 MB pamięci i około 0–1% mocy procesora.

Indeksowanie zawartości przeniesiono na północ

W tej samej odpowiedzi rozdzielono dwa zadania:

  • indeks nazw plików — utrzymywany w możliwie aktualnym stanie i aktualizowany w czasie rzeczywistym;
  • indeks zawartości plików — aktualizowany dopiero o północy i z niskim zużyciem zasobów.

To rozróżnienie nadal występuje w obecnej architekturze wyszukiwania.

Aktualna dokumentacja IceWhale opisuje:

  • monitorowanie zmian plików w czasie rzeczywistym i indeksowanie nazw plików;
  • indeksowanie zawartości o północy;
  • maksymalnie 100 000 dokumentów na typ przetwarzania/sesję;
  • maksymalnie pięć minut przetwarzania na typ;
  • ochrona przez barierę zapisu przed skokami użycia procesora;
  • zwalnianie zasobów usługi i pamięci po okresie bezczynności.

Skorzystaj z aktualnej architektury wyszukiwania ZimaOS.

Wyszukiwanie można wyłączyć od wersji ZimaOS 1.3.2

orca-zhang powiedział, że trwałość ustawień dodana w wersji 1.3.2 do /etc pozwala użytkownikom, którzy nie potrzebują wyszukiwania, wykonać polecenie:

systemctl disable zimaos-search

Zatrzymanie lub wyłączenie wyszukiwarki spowoduje, że wyszukiwanie w aplikacji Pliki zgłosi niedostępność usługi. Przed wyłączeniem kluczowej usługi wyłącznie z powodu historycznego błędu użytkownicy obecnej wersji powinni najpierw sprawdzić aktualne działanie wyszukiwarki.

Zrzut ekranu „/dev/root — zapełnienie 100%” przedstawiał inny problem

Inny uczestnik zauważył, że /dev/root wykazywał 100% użycia i próbował go powiększyć. IceWhale wyjaśniło, że ta reprezentacja głównego systemu plików SquashFS tylko do odczytu jest celowa i zapewnia integralność systemu. Nie należy traktować jej jak zwykłej, zapisywalnej partycji głównej wymagającej wolnego miejsca.

Nie zmieniaj rozmiaru ani nie usuwaj partycji systemowych ZimaOS, ponieważ obraz SquashFS zgłasza pełne zapełnienie.

Panel ZimaOS w okresie wysokiego użycia procesora przez searchd, pokazujący obciążenie procesora systemowego, pamięć masową i zainstalowane aplikacje
Wysokie użycie procesora przez wyszukiwarkę było widoczne na poziomie systemu, mimo że bazowy układ głównego systemu plików tylko do odczytu działał zgodnie z założeniami.

Wysokie użycie procesora przez wyszukiwarkę w obecnej wersji ZimaOS

  1. potwierdź, że system korzysta z najnowszej stabilnej wersji ZimaOS;
  2. sprawdź, czy niedawno zaimportowano dużą liczbę plików;
  3. poczekaj, aż zakończy się opisane okno indeksowania;
  4. sprawdź, czy użycie procesora spada po okresie bezczynności usługi;
  5. Jeśli użycie procesora pozostaje wysokie znacznie dłużej niż oczekiwano, zbierz aktualne logi zimaos-search.

FAQ: wysokie użycie procesora przez searchd

Czy 100% użycia procesora przez kilka dni uznawano za normalne?

Nie. IceWhale później zidentyfikowało skrajny przypadek związany z logiką stronicowania i naprawiło go w wersji 1.3.2-beta2.

Kiedy obecny ZimaOS indeksuje zawartość?

Aktualna dokumentacja podaje, że indeksowanie zawartości odbywa się w godzinach małego obciążenia, o północy, natomiast zmiany nazw plików są indeksowane w czasie rzeczywistym.

Czy 100% użycia /dev/root oznacza, że na dysku systemowym nie ma wolnego miejsca?

Nie dotyczy bieżącej sprawy. IceWhale wyjaśniło, że reprezentacja głównego systemu plików SquashFS jest celowo tylko do odczytu i powinna być wyświetlana jako pełna.