OpenOffice2.0-Performance unter Linux
Geizhals » Forum » Linux-Support » OpenOffice2.0-Performance unter Linux (16 Beiträge, 503 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.
Re: OpenOffice2.0-Performance unter Linux
03.11.2005, 13:07:11
Openoffice ist genial... Nur Linux ist ein Schwein ,-).

Mit den 2.6ern änderte sich da ja so einiges - u.a. der Scheduler.
Bisher (2.4) hatte der Scheduler ein O(n), mit 2.6 bekam er ein einmaliges O(1).

Wie wurde das erzielt ?
Vorher:
Es gibt eine Linked List aller Prozesse
Bei jedem Taskswitch schaut sich der Scheduler /alle/ Einträge der Liste an um zu sehen, welcher als nächstes drankommt - indem er u.a. die Prioritäten der running-Prozesse prüft
dann wählt er den passenden aus und wechselt zu ihm.

Neu:
Es gibt /2/ Queues - eine active und eine expired.
Alle Prozesse kommen - nach Prioritäten sortiert - in die active queue.
der Scheduler
  nimmt einfach den obersten prozess der active queue
  arbeitet ihn ab
  und stellt ihn in in die expired queue

Wenn die active queue um fertig ist, wird die expired zur neuen active queue.

So wurde die Latenzzeit reduziert, und egal wieviele prozesse am Werken sind - die Latenzzeit durch den Scheduler bleibt gleich.

AAAABER: neue Konzepte => neue Probleme.

Openoffice verwendet gerne und viel sched_yield().
Mit sched_yield kann ein Prozess sagen, daß er zur Zeit genug CPU-Zeit hatte - und daß er jetzt gerne an das Ende der prozeß-queue gestellt werden möchte. Man kann das so ähnlich wie ein einmaliges nice (eben für nur einen Task-Switch) sehen. Wenn der Prozeß der einzige in seiner Prioritätsgruppe war, kam er sofort wieder dran. Zumindest kamen keine nieder priorisierten Prozesse dran.

Durch den neuen Scheduler sieht die Welt aber anders aus:
Denn jetzt landet der Prozess nach sched_yield in der expired_queue.. und kommt erst dran, wenn /alle/ anderen Prozesse dran waren - egal wie nieder priorisiert.

Dadurch wurde ein seehr cleveres Konzept wie sched_yield() ad absurdum geführt - mit [auch] Openoffice als leidtragendem - und das nur, damit sich ein paar Typen einen runterh^H^H^H^H^H^H^Hfreuen können, daß sie O(1) statt O(n) haben.

Umso bedauerlicher, da wohl kein Programm ohne sched_yield() geschrieben wird (außer evtl. "Hello World").

Kurzum:
Es scheint logisch, daß durch solche Aktionen Linux grundsätzlich langsamer wird als Windows - und gerade große (und dadurch aus CPU-Sicht "teure") Applikationen dafür büßen.

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung