[ leka @ 26.02.2002. 10:41 ] @
Pre nego ospete kritike da kazem ovo , gospodin Dr. Edward G. Bradford [[email protected]] je glavni IBMov covek za "Microsoft Premier Support" u IBMovoj softverskoj grupi, legenda na polju cross-platform programiranja... Znaci, nije u pitanju pristrasna osoba.

Elem, na http://www-106.ibm.com/develop...ux/library/l-rt7/?dwzone=linux mozete videti kako je covek obavio ispitivanja, mozete da skinete source, da iskompajlirate na obe platforme i da se uverite u podatke...

Ukratko: Linux je u testovima brzine kreiranja procesa i niti RAZBUC'O Windows...

Ovo ce verujem posebno interesovati Tatu, s obzirom da se secam nase diskusije na LinuxSerbia :)

Tata, ocekujem tvoj odgovor.
[ Dragi Tata @ 26.02.2002. 23:53 ] @
Najpre da te iskritikujem što mi još nisi odgovorio na ono pitanje o gcc-u, a onda da se bacimo na temu.

Prvo, na LinuxSerbia smo koliko se sećam, raspravljali o tome kako da na Linux-u i ostalim Unix-ima "opslužujem" veliki broj klijenata, s obzirom da nemaju IOCP. Ako te interesuje, još nisam rešio taj problem.

Inače, poznata je stvar da Unix-i mnogo brže prave nove procese nego NT (ovde preskačem 95 seriju, jer nije bitna za raspravu). U Unix svetu je normalno da se forkuju procesi do mile volje, a teško ćeš naći ozbiljnog NT programera koji će da radi nešto slično. Na NT-u ne postoji ništa kao što su grupe procesa na Unix-u, i uopšte interproces komunikacija nema tako veliki značaj. I da dodam da na NT-u nema "Zombija".

E, što se tiče rada sa nitima, tu me je uvaženi Dr Bradford malo iznenadio, ali pošto je na mojoj mašini znatno starija verzija Linux kernela, a imam dial-up vezu sa internetom, ne mogu da proverim njegova zapažanja. Uostalom, više bi me zanimalo kako stoje stvari u pogledu performansi lock-ova na Linux-u vs NT-u, jer to mnogo više utiče na brzinu rada server aplikacija. Imaš li kakva merenja na tu temu?
[ Dragi Tata @ 27.02.2002. 18:13 ] @
Nego (gle, slučajnosti!), na Code Project-u naleteh na diskusiju o gorepomentutom članku. Najpre sam stavio link na tu diskusiju , ali nešto ne radi, pa ću ukratko da prepričam.

Uglavnom, gospoda programeri tvrde da NT server programi i ne treba da prave nove niti (ili, ne daj Bože procese) za svakog klijenta, već treba imati "thread pool" (nek prevede ko zna) a u njemu najviše 10 niti na svaki procesor koji mašina ima. Tako se postiže optimalno "služenje" klijenata i maksimalno iskorišćenje resursa.

A ako je verovati onome što se može pročitati na sajtu
http://www.kegel.com/c10k.html
prolazi i vreme kada se na Unix-ima moglo forkovati bez griže savesti. Uostalom, ako je Unix fork samo duplo brži od NT CreateProcess, čudi me da iko ozbiljan koristi forkovanje, osim za servere sa malim saobraćajem. I Apache su prepravili da koristi "thread pool"-ove.


[ Dragi Tata @ 03.03.2002. 05:01 ] @
Nema Leke da se javi, a meni žao da propadne ovakva prilika za "flejmovanje" :) pa da opet dodam nešto.

Danas sam "kopao" po nekim knjigama o Unix/Linux network programiranju, pa sam našao jednu stvarno dobru: "Unix Network Programming" Richard Stevens. Evo link na stranicu sa podacima o toj knjizi, a može se naći i source za primere

http://www.kohala.com/start/unpv12e.html

U poglavlju 27 su dati razni pristupi projektovanju klijent-server aplikacija. Autor tvrdi da je fork-ovanje za svakog klijenta bilo prihvatljivo 80-ih, ali danas teško dolazi u obzir. Moderne Unix server aplikacije koriste "pool" - ove procesa, ili još bolje niti, koji se formiraju kod startovanja aplikacije, tako da nema potrebe da se forkuju procesi ili startuju nove niti za svakog klijenta. Jednostavno, to je preskupo, čak i na Unix-ima.

Nažalost, mnogi Unix programeri se tvrdoglavo drže fork-ovanja, neopravdano smatrajući da je to "jeftin" način da se opslužuju klijenti. Jeste jeftin u poređenju sa NT-om, ali je i dalje preterano skup.

Najzad, da ponovo pomenem IO Completion Ports, koji služe kao "psi čuvari" za niti kod NT server aplikacija i omogućuju optimalno korišćenje procesorske snage kod opsluživanja velikog broja klijenata. Priznajem da mi nije jasno zašto Unix-i nemaju tako nešto, tim pre što IOCP nije "izmišljotina" Microsoft-a. I drugi OS-ovi ga imaju (OS/400, VMS, na primer). Znam da je bio neki "patch" na Linux-u za IOCP, ali sam prilično siguran da nije uključen u kernel.