Autor Thema: Wie skaliert Domino 7 auf Multiprozessor-Systemen?  (Gelesen 4957 mal)

Offline matze79

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 587
  • Ich liebe dieses Forum!
Hallo,

unter SLES9 (Kernel 2.6.5) sehe ich per "ps ax" nur einen Linux-Prozess pro Domino-7-Programm. Unter SLES8 und Domino 6.x dagegen werden eine vielzahl angezeigt. Ich habe zu dem Thema auch schon eine Technote gefunden, die eigentliche sagt, dass alles O.K ist.

Domino on Linux uses multiple processes (essentially LWP - lightweight process)  and manages each process as a virtual threads.  So each process is actually a Domino thread.  This is how Domino on Linux is supposed to work.
But if you aren't seeing this behavior what it could mean is that the Domino server is using NPTL (Native Posix Thread Library) as opposed to LinuxThreads.  Newer versions of Linux will default to NPTL behavior if LD_ASSUME_KERNEL is not set to a kernel assumption based on 2.2.5 or 2.4.*
NPTL is not expected to be supported in 6.x code.  It is currently being considered for 7.x.

Was ich nun nicht verstehe: Wie skaliert Domino auf mehrere CPUs? Der Server-Prozess, zum Beispiel, läuft dann doch nur noch auf einer CPU. Oder habe ich da ein Verständnissproblem mit der Prozesstruktur von Linux auf SMP-Systemen?

Viele Grüße
Matthias
IBM Cerified System Administrator Lotus Notes and Domino 6/6.5
400 User, 10 Server, BES, Sametime und anderer Gimmicks

Offline m3

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Wie skaliert Domino 7 auf Multiprozessor-Systemen?
« Antwort #1 am: 23.06.06 - 12:49:41 »
Lotus Domino 7 server performance, Part 1
Zitat
When Domino 6 was designed, the Linux (x86) kernels it had to support did not have sys-epoll capability. Therefore, Domino could not support a threadpool model like the other platforms use. This caused each NRPC user to spawn off a server thread. Each server thread then required a stack, which takes up 256K of memory. These stacks are allocated from the 2 GB of memory that the operating system gives Domino, thereby limiting the number of NRPC users Domino 6 can support to 3000. (Linux on zSeries implemented sys-epoll in Domino 6.5.)

With Domino 7, we take advantage of the sys-epoll feature in the new kernels (for example, SuSE SLES 8 and SLES 9), which allow Domino to use the same threadpool model as other platforms. This, along with the improvements in the NPTL Posix library contained in SLES 9, has greatly improved Domino’s scalability, allowing us to attain 15,000 R6Mail users -- a 400 percent improvement! (See figure 2.)

Lotus Domino 7 server performance, Part 2
Zitat
Unlike NRPC on Domino 6.x, Domino Web Access on Linux does not require an HTTP thread and stack per user. The HTTP task itself is able to do the pooling, so the default of 40 HTTP threads can support several thousand users. This is true in both Domino 6.x and Domino 7, making percent CPU the limiting factor in the number of users that can be supported.

In Domino 7, we substantially reduced the amount of CPU required to support a user. Figure 2 shows this reduction in percent CPU and how it allows Domino 7 to gain around 50 percent more Domino Web Access users than Domino 6.x.

P.S.: Du könntest ja die Lotus Domino platform statistics benutzen, um Detailinfos zu den Prozessen zu bekommen.
« Letzte Änderung: 23.06.06 - 13:08:42 von m3 »
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Wie skaliert Domino 7 auf Multiprozessor-Systemen?
« Antwort #2 am: 06.07.06 - 15:50:08 »
Hallo,

habe das ähnliches Problem, das in
http://atnotes.de/index.php?topic=21563.0
auch besprochen wurde.

Unter SLES8 und Domino 6.x dagegen werden eine vielzahl angezeigt. Ich habe zu dem Thema auch schon eine Technote gefunden, die eigentliche sagt, dass alles O.K ist.

@matze79,
Es wäre sehr nett, wenn Du das Link zur diese Technote geben würdest.
Vielen Dank im voraus

Schoene Gruesse
Sofia

« Letzte Änderung: 06.07.06 - 15:54:32 von sja »

Offline matze79

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 587
  • Ich liebe dieses Forum!
Re: Wie skaliert Domino 7 auf Multiprozessor-Systemen?
« Antwort #3 am: 07.07.06 - 10:58:13 »
Ein einzelner Dominoprozess skaliert laut Lotus nicht auf mehrere CPUs, da Domino nicht Multi-Threaded ist. Soll heißen, dass alle User einen "server" -Thread (aus Sicht des Betriebssytems) auf einer CPU nutzen. Nutz dieser Thread viel CPU wird dann z.B. für den "update"-Thread eine andere CPU genutzt.

Will man einen Task auf mehrere CPUs verteilen, muss man Partitioned-Server einsetzen.
IBM Cerified System Administrator Lotus Notes and Domino 6/6.5
400 User, 10 Server, BES, Sametime und anderer Gimmicks

Offline Tim Lemmen

  • Frischling
  • *
  • Beiträge: 2
Re: Wie skaliert Domino 7 auf Multiprozessor-Systemen?
« Antwort #4 am: 11.07.06 - 11:30:41 »
Ich kann mich der Aussage von matze79 anschließen, habe aber aus praktischer Erfahrung (Solaris) einige Anmerkungen:
Der Mailrouter kann mehrere threads verwenden, von Agentmanager, Indexer, Replikator, Clusterreplikator, Compacter etc. können mehrere Instanzen gestartet werden, die durchaus die komplette Prozessorhardware (in meinem Fall problemlos 8 CPUs) nutzen. Wenn alle Prozesse fleißig schaffen sollten bei Speicher und Platten keine Engpässer produziert werden.

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Wie skaliert Domino 7 auf Multiprozessor-Systemen?
« Antwort #5 am: 11.07.06 - 15:16:36 »
Sorry was Matze schreibt ist nicht korrekt. Zumindest nicht für Domino 7. Der Server Prozess ist eben gerade Multithreaded. Das heisst jeder Benutzer kann auf einem anderen CPU ausgeführt werden. Früher war das unter Linux in der Form nicht möglich, weshalb Domino auf Linux auch nicht optimal skalieren konnte.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline matze79

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 587
  • Ich liebe dieses Forum!
Re: Wie skaliert Domino 7 auf Multiprozessor-Systemen?
« Antwort #6 am: 11.07.06 - 20:46:39 »
@Ralf_M_Petter
Könntest du deine These bitte näher belegen? Du siehst auf deinem Linux doch auch nur eine Server-Thread, oder?


> Der Server Prozess ist eben gerade Multithreaded

"Multithreaded" heisst "a single thread per session" im Betriebssystem.

Wenn ich den nachfolgenden Artikel richtig lese, werden unter Domino >4 interne Worker-Threads genutzt, welche man nicht als Multithread bezeichnet. Nebenbei wird in dem Artikel auch die Erklärung für das Verhalten genannt.

Previous releases (R 4.x and earlier) of the Domino server supported a single thread per session model. This means for every user session established, a dedicated set of resources were allocated at the Domino application and supporting operating system level. As Domino supports more users in the form of session connections, the amount of resources tied up to support those additional users also increases, which in turn requires additional internal threads.
...
These worker threads are defined to service multiple client sessions via a limited number of threads that execute.
...
The worker thread model can be likened to the cashiers in a grocery store. There are far fewer cashiers than shoppers who need to use them. Shoppers queue up, as needed, to be serviced by a cashier. Sometimes all cashiers are busy; sometimes only a few are servicing customers. Like the number of worker threads, the number of cashiers is constant, regardless of workload. Depending on the number of customers and available cashier stations, more cashiers can be added to service increasing numbers of customers.


http://www-128.ibm.com/developerworks/lotus/library/ls-spin1/#N102BC
« Letzte Änderung: 11.07.06 - 20:49:12 von matze79 »
IBM Cerified System Administrator Lotus Notes and Domino 6/6.5
400 User, 10 Server, BES, Sametime und anderer Gimmicks

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Wie skaliert Domino 7 auf Multiprozessor-Systemen?
« Antwort #7 am: 12.07.06 - 07:21:57 »
Leider Matze du vermsicht hier mehrere Sachen die nichts miteinander zu tun hat.

Hier noch einmal die Begriffserklärung

Prozess ist ein schwergewichtiger Programmablaufbereich im Operating System, der in der Prozessliste aufscheint. Das erstellen eines so eines Prozesses ist für das Betriebssystem sehr aufwendig. Prozesse sind normalerweise strikt voneinander getrennt und belegen eigene  Speicherbereiche usw.

Thread ist ein leichtgewichtiger Programmablaufbereich innerhalb eines Prozesses, der nicht in der Prozessliste aufscheint. Das erstellen eines Threads ist für das Betriebssystem verleichsweise nicht aufwendig. Threads teilen sich einige Ressourcen mit andern Threads im OS.

So bei nicht Linux System war es schon immer oder zumindest seit R5 so, dass es einen Server Prozess gegeben hat in dem mehrere Server Worker Threads ob dieses dann ein Thread per Session sind wie bis 5.0.3 auf der Iseries oder geshared Worker Threads wie jetzt ist unerheblich. Bei Linux war es aber so, da die Threadunterstützung in Kernel vor NPTL nicht besonders war statt Threads Prozesse erstellt wurden. Das heisst man hatte nicht einen Server Prozess sondern viele Server Prozesse mit jeweils einem Thread.

Da die Anzahl der maximalen Prozesse beschränkt ist, konnte Domino auf Linux auch nicht sehr gut skalieren. Da Domino ab 7.0 NPTL nutzt, ist diese Beschränkung aufgehoben. Das selbe gilt übrigens auch bei Java. Die meisten Java Anwendungen verwenden massiv Threads und das war früher auf Linux ein großes Problem.

Grüße

Ralf
 
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz