Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam, od tygodni sporam się z wielkim problemem wydajności na moim serwerze.
Stawiam na nim serwery CS 1.6 (HLDS). I problem polega na tym że przy większej ilości graczy CPU waha się w granicach 80-90 CPU..
13:43:32 stats
13:46:32
CPU In Out Uptime Users FPS Players
38.00 73.24 122.14 1169 877 271.22 12
13:46:19
CPU In Out Uptime Users FPS Players
92.00 137.38 178.71 567 515 39.75 21
FPS'y to już w ogóle latają od 60 do 450 (sys_ticrate 500)
Serwer to HP ProLiant DL 580 G2
Procesor: 4x Intel(R) Xeon(TM) MP CPU 3.00GHz (4mb l3 cache) Pamięć: 8 GB DDR ECC Dysk: 4 x 72,8 GB SCSI ULTRA 3, 10k RPM (W RAID 0) Kontroler HP Smart Array 642 U320 192MB PC-X 2 x PS/2, VGA, COM, 2 x USB, 2 x LAN, Zasilacz : 2 x zasilacz HotSwap
cpuinfo
processor : 7 vendor_id : GenuineIntel cpu family : 15 model : 2 model name : Intel(R) Xeon(TM) MP CPU 3.00GHz stepping : 6 cpu MHz : 2994.646 cache size : 4096 KB physical id : 3 siblings : 2 core id : 0 cpu cores : 1 apicid : 7 initial apicid : 7 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pebs bts cid xtpr bogomips : 5986.77 clflush size : 64 cache_alignment : 128 address sizes : 36 bits physical, 32 bits virtual
Ostatnio nawet ze znajomym kompilowaliśmy kernel z patchem RT.. niestety nie pomogło.
2.6.33.7-rt29 #1 SMP PREEMPT RT Tue Jan 24 00:00:59 CET 2012 i686
# # Processor type and features # CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y CONFIG_SMP=y CONFIG_X86_MPPARSE=y CONFIG_X86_BIGSMP=y CONFIG_X86_EXTENDED_PLATFORM=y # CONFIG_X86_ELAN is not set # CONFIG_X86_MRST is not set # CONFIG_X86_RDC321X is not set # CONFIG_X86_32_NON_STANDARD is not set CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y # CONFIG_XEN is not set CONFIG_VMI=y CONFIG_KVM_CLOCK=y CONFIG_KVM_GUEST=y CONFIG_LGUEST_GUEST=y CONFIG_PARAVIRT=y # CONFIG_PARAVIRT_SPINLOCKS is not set CONFIG_PARAVIRT_CLOCK=y # CONFIG_MEMTEST is not set # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set # CONFIG_M586TSC is not set # CONFIG_M586MMX is not set # CONFIG_M686 is not set # CONFIG_MPENTIUMII is not set # CONFIG_MPENTIUMIII is not set # CONFIG_MPENTIUMM is not set # CONFIG_MPENTIUM4 is not set # CONFIG_MK6 is not set # CONFIG_MK7 is not set # CONFIG_MK8 is not set # CONFIG_MCRUSOE is not set # CONFIG_MEFFICEON is not set # CONFIG_MWINCHIPC6 is not set # CONFIG_MWINCHIP3D is not set # CONFIG_MGEODEGX1 is not set # CONFIG_MGEODE_LX is not set # CONFIG_MCYRIXIII is not set # CONFIG_MVIAC3_2 is not set # CONFIG_MVIAC7 is not set # CONFIG_MPSC is not set CONFIG_MCORE2=y # CONFIG_MATOM is not set # CONFIG_GENERIC_CPU is not set # CONFIG_X86_GENERIC is not set CONFIG_X86_CPU=y CONFIG_X86_INTERNODE_CACHE_SHIFT=7 CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=6 CONFIG_X86_XADD=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_TSC=y CONFIG_X86_CMPXCHG64=y CONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=5 CONFIG_X86_DEBUGCTLMSR=y CONFIG_CPU_SUP_INTEL=y CONFIG_CPU_SUP_CYRIX_32=y CONFIG_CPU_SUP_AMD=y CONFIG_CPU_SUP_CENTAUR=y CONFIG_CPU_SUP_TRANSMETA_32=y CONFIG_CPU_SUP_UMC_32=y # CONFIG_X86_DS is not set CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_DMI=y # CONFIG_IOMMU_HELPER is not set # CONFIG_IOMMU_API is not set CONFIG_NR_CPUS=8 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT_DESKTOP is not set CONFIG_PREEMPT_RT=y CONFIG_PREEMPT=y CONFIG_PREEMPT_SOFTIRQS=y CONFIG_PREEMPT_HARDIRQS=y CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y # CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set CONFIG_X86_MCE=y CONFIG_X86_MCE_INTEL=y # CONFIG_X86_MCE_AMD is not set # CONFIG_X86_ANCIENT_MCE is not set CONFIG_X86_MCE_THRESHOLD=y # CONFIG_X86_MCE_INJECT is not set CONFIG_X86_THERMAL_VECTOR=y CONFIG_VM86=y CONFIG_TOSHIBA=m CONFIG_I8K=m # CONFIG_X86_REBOOTFIXUPS is not set CONFIG_MICROCODE=m CONFIG_MICROCODE_INTEL=y # CONFIG_MICROCODE_AMD is not set CONFIG_MICROCODE_OLD_INTERFACE=y CONFIG_X86_MSR=m CONFIG_X86_CPUID=m # CONFIG_NOHIGHMEM is not set # CONFIG_HIGHMEM4G is not set CONFIG_HIGHMEM64G=y CONFIG_PAGE_OFFSET=0xC0000000 CONFIG_HIGHMEM=y CONFIG_X86_PAE=y CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_NUMA=y CONFIG_NODES_SHIFT=3 CONFIG_HAVE_ARCH_BOOTMEM=y CONFIG_NEED_NODE_MEMMAP_SIZE=y CONFIG_HAVE_ARCH_ALLOC_REMAP=y CONFIG_ARCH_DISCONTIGMEM_ENABLE=y CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ILLEGAL_POINTER_VALUE=0 CONFIG_SELECT_MEMORY_MODEL=y # CONFIG_FLATMEM_MANUAL is not set # CONFIG_DISCONTIGMEM_MANUAL is not set CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM=y CONFIG_NEED_MULTIPLE_NODES=y CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_STATIC=y # CONFIG_MEMORY_HOTPLUG is not set CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_MIGRATION=y CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y CONFIG_MMU_NOTIFIER=y # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 # CONFIG_HIGHPTE is not set # CONFIG_X86_CHECK_BIOS_CORRUPTION is not set CONFIG_X86_RESERVE_LOW_64K=y # CONFIG_MATH_EMULATION is not set CONFIG_MTRR=y CONFIG_MTRR_SANITIZER=y CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 CONFIG_X86_PAT=y CONFIG_ARCH_USES_PG_UNCACHED=y CONFIG_EFI=y CONFIG_SECCOMP=y # CONFIG_CC_STACKPROTECTOR is not set # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set CONFIG_HZ_1000=y CONFIG_HZ=1000 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y # CONFIG_CRASH_DUMP is not set CONFIG_PHYSICAL_START=0x1000000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x100000 CONFIG_HOTPLUG_CPU=y # CONFIG_COMPAT_VDSO is not set # CONFIG_CMDLINE_BOOL is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID is not set
Offline
na tym że przy większej ilości graczy CPU waha się w granicach 80-90 CPU.[/quote]
A co się kryje pod hasłem "większa ilość graczy"?
Poza tym radzilbym pytać na forum ovh - tam trochę ludzi ma podobne serwery, albo na jakimś forum CS.
Kernel RT zmienia priorytety procesów, ale nie dodaje dodatkowego procka.
Radziłbym potestować z autogroup (jest w jaju od wersji 2.6.37) lub [url=http://users.on.net/~ckolivas/index.html]CKO[/url], ewentualnie.
Poza tym Debian jest bezpieczny i łatwy w administrowaniu, ale jak dobrze znasz temat, to zarówno z Gentoo jak i z FreeBSD można wyciągnać zauważalny wzrost wydajności.
Pod warunkiem, że zaczynasz od kompilatora.Ostatnio edytowany przez Jacekalex (2012-02-05 14:27:58)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
Na forum CS cała ta wiedza co do wydajności jest chyba jedną wielką tajemnicą..
Co do ilości graczy, to przy 20+ jest już słabo, obciążenie jest w granicy 70-80CPU i przez to już rośnie ping graczom, a serwer HLDS potrafi obsłużyć 32 graczy, a wczoraj gdy zapełniłem serwer do 28 to zżerało 96CPU 30-40FPS i ping każdy w okolicach 100 ;)
Jak będzie trzeba to będę szukał pomocy wszędzie, aż ktoś mnie na coś konkretnego nakieruje :)
Offline
Spróbuj nowsze jajo, między 2.6.33 a 3.2 to jest prawie epoka, sporo poprawek dotyczylo rozmaitych optymalizacji, wydajności, itp.
Co do kernela, ja bym spróbował łatkę cko, i zobaczył, co generuje największe obciązenie, 20-40 graczy,to trochę mało żeby zajechać taką maszynę, o ile wszystko chodzi prawidłowo.
Zapotrzebowanie powinno się zmieścić na poziomie około 50Mhz/pacjent.
Jak instalowałeś tego CSa?
Ostatnio edytowany przez Jacekalex (2012-02-05 14:43:00)
Offline
http://hlds.pl/Sprz%C4%99t
tutaj pisze
[i]Średnio powinno wyliczać się jakieś 50 MHz na jednego gracza (slot).[/i]
tylko czy ten serwer cs potrafi wykorzystać kilka procesorów?
sam próbowałem ostatnio postawić taki serwer (jak ktoś przyjdzie na piwko by sobię pograć) ale przez to, że wymaga instrukcji SSE pentium2 okazało się niewystarczające :(
Ostatnio edytowany przez dominbik (2012-02-05 14:36:00)
Offline
No właśnie maszyna to jest pershing, dlatego dziwie się dlaczego taka mała wydajność, dzięki za wypowiedz, na pewno skorzystam :)
Ktoś ma jeszcze jakieś pomysły?
Nie, HLDS korzysta tylko z jednego rdzenia, nie rozdziela obciążenia, a szkoda :D
Ostatnio edytowany przez gokaj (2012-02-05 14:43:00)
Offline
[quote=http://hlds.pl/Sprz%C4%99t]Gentoo - Nieeeeeeeee polecam, chyba że masz mnóstwo czasu na rekompilacje.[/quote]
Pocieszny tekst.
Co do optymalizacji na poziomie systemu, radzilbym zobaczyć, czy da się odpalić kilka procesów tego serwera, wtedy pójdzie na kilku rdzeniach.
Poza tym przejrzeć, co jest na serwerze niezbędne, Debian czy CentOS potrafią w serwerowych wrersjach zaciągać jakieś śmieci w stylu avahi, gpm, zeroconf, i podobne bzdury, które potem wiszą w ramie bez pożytku.
ALe jeśli gra chodzi na jednym jaju, a jajek masz na serwerze kilka, to raczej gdybanie, niż konkretny zysk.
Poza tym popatrz dokładnie w htopie, co tam tak przymula, bo obciążenie normalne nie jest.
mogą się zdarzac wycieki pamięci, czy jakieś pętle nieskończone (błąd programistyczny, konflikt z taką czy inną biblioteką),
i podobne bzdury, powodujące puste przebiegi procka, i czasami kosmiczne obciążenie nie wiadomo skąd.
Pod tym kątem też radziłbym poszukać.
Ostatnio edytowany przez Jacekalex (2012-02-05 16:29:11)
Offline
[quote=Jacekalex]Jak instalowałeś tego CSa?[/quote]
[url]http://board.counter-strike.pl/viewtopic.php?t=1472[/url]
a potem odpalam je skryptem
#!/bin/sh sleep 1 cd /home/servers/hlds_27015/ /usr/bin/nice -n -20 /usr/bin/taskset -c 6 ./hlds_run -console -game cstrike -port 27015 +map de_dust2 +maxplayers 32 +other
Offline
Ja bym spróbował puścić kilka procesów na różnych rdzeniach i portach, a potem kombinowal, jak pokierowac pacjentow na poszczególne procesy/porty.
Jak masz kilka adresów IP, to może się udać.
Poza tym bezpieczeństwo:
Żeby odalić program z priorytetem ujemnym, potrzebujesz uprawnień roota.
Ten skrypt nie zrzuca uprawnień po ustaleniu priorytetu, czy sam hlds zrzuca uprawnienia?
Bo jeśli nie, to cały bajzel idzie z prawami roota, i nie trzeba Anonimowych, wystarczy pierwszy lepszy skrypciarz, żeby "zaopiekować" się takim serwerem.
Ewentualnie, jak masz kilka rdzeni, a darmowa wersja chodzi na jednym to czy nie mają wersji, która zapierdala na kilku wątkach, jak każdy normalny demon sieciowy?
Ostatnio edytowany przez Jacekalex (2012-02-05 15:16:03)
Offline
wydaje mi się ze uprawnienia idą na sam proces a nie na cały serwer, a co do HLDS to aplikacja jest niestety jednowątkowa :/
zresztą kombinuje już z tymi priorytetami, jaki proponujesz dać?
Offline
Z uprawnieniami jakiego usera chodzi proces HLDS?
Bo jeśli root, to prędzej czy później możesz mieć przypał.
Jeśli jakiś user z powłoką [b]/bin/false[/b] i minimalnymi uprawnieniami, to ok.
Co do priorytetu to - może być, ale lepiej ustaw to dla niższego usera od roota w [b]/etc/security/limits.conf[/b], albo dorzuć do tego polecenia
/usr/bin/nice -n -20 /usr/bin/taskset -c 6 sudo -u user ./hlds.......
- gdzie user będzie odpowiednio skonfigurowany.
Poza tym, masz tam jeden adres IP na serwerze, czy kilka?
Bo własnie zainstalowałem sobie z ciekawości na moim Gentoo
paczkę [b]games-server/halflife-steam[/b], i w konfigu [b]/etc/conf.d/hlds[/b] widzę co następuje:
HLDS_SERVER1="-game cstrike -port 27015 +map de_dust2" #HLDS_SERVER2="-game cstrike +ip a.b.c.d -port 27015 +map de_aztec15" #HLDS_SERVER3="-game cstrike +ip a.b.c.d -port 27016"
A to oznacza, że można go odpalić na kilku jajkach, jak się dobrze pokombinuje.
Sznurek: http://www.gentoo-wiki.info/Half-Life_Dedicated_Server
Ostatnio edytowany przez Jacekalex (2012-02-05 16:07:19)
Offline
jeden adres IP mam, ale dowolna ilość portów ofc, a co mi da jak odpalę 1 serwer na X jajku i 2 serwer na Y jajku :>?+
może dla każdego serwera zrobię osobny ftp i właśnie z tego użytkownika będę go odpalał?
Zobacz.. masakra
16:24:53
CPU In Out Uptime Users FPS Players
[b]81.33[/b] 104.01 146.01 138 138 124.01 15
;(
Chyba wywale go w cholere i kupie jakis i7..
Ostatnio edytowany przez gokaj (2012-02-05 16:25:33)
Offline
Tyle Ci da, że każde fizyczne jajko to jakby jeden procesor jednordzeniowy.
Jak demon wisi na jednym rdzeniu (z czterech), a trzy pozostałe nie mają nic do roboty, to wykorzystujesz 25% mocy serwera.
Jak odpalisz 3 procesy - to masz wykorzystane 3 rdzenie, i co za tym idze 3/4 serwera.
Jak na jednym rdzeniu ten obecny ciągnie 20 pacjentów, to na 3 rdzeniach pociagnie około 55-60 pacjentów, bez żadnych specjalnych kombinacji z softem.
I żaden procek 6 czy 8 rdzeniowy na jednym rdzeniu nie da Ci takiego kopa z wydajnością, jak wykorzystanie kilku rdzeni.
Jak ja płaciłbym parę stów za serwer, żeby wykorzystać na nim 25% mocy obliczeniowej, to raczej wolałbym zobaczyć, czy nie można za jakieś sensowne pieniądze kupić licencji na wielordzeniową wersję tego CS'a.
Bo procków 1*12Ghz nie robią, za to 4*3,2 Ghz robią, i to działające.
Ostatnio edytowany przez Jacekalex (2012-02-05 16:39:42)
Offline
[quote=gokaj]jeden adres IP mam, ale dowolna ilość portów ofc, a co mi da jak odpalę 1 serwer na X jajku i 2 serwer na Y jajku :>?+
może dla każdego serwera zrobię osobny ftp i właśnie z tego użytkownika będę go odpalał?
Zobacz.. masakra
16:24:53
CPU In Out Uptime Users FPS Players
[b]81.33[/b] 104.01 146.01 138 138 124.01 15
;(
Chyba wywale go w cholere i kupie jakis i7..[/quote]
Nie wywalaj! Oddaj mi ;-)
Offline
Po co RT? Jesli cos nie jest napisane z mysla o RT to nie ma sensu. Po drugie po co dajesz tak wysoki priorytet nie wystarczy 0? Jestes pewny że ten deamon prwidłowo działa z sztywo przynanym CPU?
Offline
[quote=qluk]Po co RT? Jesli cos nie jest napisane z mysla o RT to nie ma sensu. Po drugie po co dajesz tak wysoki priorytet nie wystarczy 0? Jestes pewny że ten deamon prwidłowo działa z sztywo przynanym CPU?[/quote]
tutaj było o tym, i tak na spróbowanie wgraliśmy patcha RT
[url]http://wiki.fragaholics.de/index.php/EN:Linux_Kernel_Optimization#Downloading_the_Kernel_and_the_patch[/url]
miałem priorytet 0 , +5 +10 itp, i efekt taki sam, a nawet przy priorytecie większym niż +10 to ścinało grę co jakieś ~3 minuty na 2-3 sekundy ..
Offline
[quote=gokaj]jeden adres IP mam, ale dowolna ilość portów ofc, [b]a co mi da jak odpalę 1 serwer na X jajku i 2 serwer na Y jajku :>?+[/b]
może dla każdego serwera zrobię osobny ftp i właśnie z tego użytkownika będę go odpalał?
Zobacz.. masakra[/quote]
[quote=gokaj]tutaj było o tym, i tak na spróbowanie wgraliśmy patcha RT
[url]http://wiki.fragaholics.de/index.php/EN:Linux_Kernel_Optimization#Downloading_the_Kernel_and_the_patch[/url]
miałem priorytet 0 , +5 +10 itp, i efekt taki sam, a nawet przy priorytecie większym niż +10 to ścinało grę co jakieś ~3 minuty na 2-3 sekundy ..[/quote]
[quote="wiki.fragaholics.de"]* On some systems (especially on quad core like Q6600), running one idler per core might be necessary, like:
nice -n +19 taskset -c 0 screen -AmdS idler1 ./idler nice -n +19 taskset -c 1 screen -AmdS idler2 ./idler nice -n +19 taskset -c 2 screen -AmdS idler3 ./idler nice -n +19 taskset -c 3 screen -AmdS idler4 ./idler
I recommend testing both running a single idler and one idler per core, as there is no way to tell what is better without testing!
* Also usually on quad cores it can be better to run each server on a different core, like:
taskset -c 0 screen -AmdS cs-server ./hlds_run put your options here taskset -c 1 screen -AmdS cs-server ./hlds_run put your options here taskset -c 2 screen -AmdS cs-server ./hlds_run put your options here
[/quote]
Czego dotyczy ten cytat z wiki?
Dokumentację na wiki czyta się po to żeby ją przeczytać i zrozumieć, czy w innym celu? :xD
Szkoda, że na dugu nie mamy nagród złotego i platynowego pegaza ;)
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2012-02-05 18:15:34)
Offline
To jak ma wtedy wyglądać ta linia..
Możesz mi pomóc na priv :D?
Ostatnio edytowany przez gokaj (2012-02-05 18:25:54)
Offline
Linię w skrypcie masz gotową, tam tylko bym dodał po taskset sudo -u user - zeby zrzucić uprawnienia z roota - będzie bezpieczniej.
Dowcip polega na tym, że odpalasz nie jeden proces serwera, tylko tyle procesów, ile masz rdzeni, kierując każdy proces na inny rdzeń tasksetem.
A to oznacza tyle linii lub oddzielnych skryptów, ile będzie trzeba.
Tutaj jedna wątpliwość - w przykładzie na wiki.fragaholics.de nie ma nic o portach i adresach IP.
A dwa hldsy na jednym porcie wisieć chyba nie mogą, więc albo każdy na innym porcie, albo adresy IP failover - na ovh mają coś takiego, w innych serwerowniach pewnie też, i każdy na innym IP.
A potem przy pomocy iptables lub binda wyczaić, jak rozdzielić pacjentów, żeby zajęli proporcjonalnie wszystkie rdzenie.
To już musisz potestować u siebie na serwerze, ja takim serwerem nie administruję, i detali dotyczących Cs'a nie znam.
Poza tym ewentualnie miauczenie pacjentów, kiedy trafią nie do tej gry, co kolega.
W każdym razie trza by to tak ustawić, żeby miało ręce i nogi.
W każdym razie na 6 jajowym Xeonie możesz w ten sposób uciągnąć lekko 100 pacjentów, a nie 20.
Co nie zmienia faktu, że jeśli 20 pacjentów pożera 1 rdzeń Xeona, to coś tam nie gra między hldsem a systemem, ale tego mozesz się dowiedzieć przez strace,lub gdb, badając backtrace hlds'a.
Tu masz opis, jak się to robi:
http://www.gentoo.org/proj/pl/qa/backtraces.xml
Ale jak do kodu hlds'a zajrzeć i czegoś poprawić nie można, to i tak niewielki będzie rezultat, chyba, żeby kombinować w stylu [url=http://forum.dug.net.pl/viewtopic.php?pid=148866#p148866]nvbodzio[/url].
Ale w debugowaniu hlds raczej pomóc zbyt wiele nie mogę, co najwyzej doradzić conieco.
Pozdro
;-)
Offline
no i przed chwilą serwer zapełnił się do 20 graczy, i po chwili się zaciął..
proces zaznaczony na screenie ofc
[img]http://csiks.pl/scina.png[/img]
Offline
no dobrze, wcześniejsze posty chyba sugerują by odpalić na kilku rdzeniach? ;>
Ostatnio edytowany przez dominbik (2012-02-05 19:16:28)
Offline
[quote=dominbik]no dobrze, wcześniejsze posty chyba sugerują by odpalić na kilku rdzeniach? ;>[/quote]
każdy serwer jest odpalony na innym rdzeniu..
Offline
Prawdopodobnie przeszedł w tryb zombie.
Gdyby był puszczony z poziomu zwykłego usera, a serwer był chroniony przez Selinux lub Grsecurity, to taki proces na 95% by zginął śmiercią tragiczną, ale serwerowi nic by się nie stało.
Nie zdziwiłbym się, gdyby ten serwer ubijał skrypciarz od konkurecji.
Bo wystawianie programu ściągnietego jako zewnętrzna binarka,
jako root na internet, to jest po prostu proszenie się o kłopoty.
Żadne aktualizacje bezpieczeństwa nie aktualizują tego hldsa w razie problemów, a przez niego można położyć serwer, to czego można się spodziewać?
Czy jakiś Developer Debiana sprawdził ten kod hldsa?
Albo inny specjalista od bezpieczeństwa?
Edyta:
Masz teraz odpalonego hldsa na wszystkich rdzeniach, i dalej 20 graczy, tak, jak na jednym rdzeniu?
Jeśli tak, to znaczy, że masz jakiś hardcorowy błąd w hlds, w kodzie albo konfiguracji.
Ostatnio edytowany przez Jacekalex (2012-02-05 19:24:13)
Offline
20:12:32
CPU In Out Uptime Users FPS Players
95.75 178.87 229.90 88 125 32.25 32
Przy pelnym serwerze, nie rozumiem zbytnio tego idler na czym polega, do kazdego procesu z serwerem sie go dodaje?
Offline
aptitude install htop htop
Poza tym wywal to jajo rt, i daj zwykle, [url=http://en.wikipedia.org/wiki/Completely_Fair_Scheduler]CFS[/url] albo skompiluj jajo z łatką CK - optymalizacja serwer, albo [url=http://lwn.net/Articles/306641/]BFQ[/url]. Możesz też spróbować [url=http://pl.wikipedia.org/wiki/Brain_Fuck_Schedule]BFS[/url], choć to rozwiązanie strickte na desktopy, podobnie jak większość funkcji CK.
Co do priorytetów (polecenie nice), nie rozwiążą problemu, bo po protu nie są od tego.
Potestuj, które rozwiązanie lepiej się sprawdzi.
Jeżeli na priorytetach -5, -10, -20 jest ten sam problem i ta sama wydajność - to masz dowód, ze nie tutaj tkwi problem, to puść na priorytecie zero - domyślnym.
W ogóle to wiki.fragaholics.de pisał jakiś idiota, który o Linuxie pojęcia nie ma.
Łata RT jest do dżwięku i obrazu, i szeroko rozumianych multimediów.
Dlatego kernelel RT pracują np w większości nowoczesnych telewizorow fullHD.
Do serwera, który musi rozkładać moc na XX żądań od pacjentów RT jest przekleństwem.
Radziłbym też aktualizację tego CSa, bo najprawdopodobniej ma jakieś błędy, które powodują takie obciążenie.
O ile w ogóle nie ma on jakichś celowych (zabezpieczeń marketingowych), zeby nie szedł z więcej niż 20 pacjentami.
Producent jest po to, zeby zarabiać, a nie dawać najwyższą jakość za darmo.
I aktualizację jajak do jakiejś bardziej współczesnej wersji, Squeeze bez problemu pracuje z 3.2 - po aktualizacji do wydania 6.0.4 .
Od 2.6.32/33 sporo się zmienilo w kierunku większej wydajności.
Poszkaj też, albo popytaj na forach, jakie obciązenie wychodzi na innych serwerach, przy podobnej liczbie pacjentów, i pytajać o wersję CSa (nie glołną, tylko jakiś kolejny numerek wersji określający np datę aktualizacji) i jaki system.
Bo coś mi się zdaje, ze ten twój CS kiepsko sobie radzi na tym Debianie, i pytanie jest takie, na jakim systemie wyciągnie lepszy wynik.
Nowszym czy starszym, czy co innego.
I ule oczywiście ta wersja CSa nie jest walnięta, to może ( choć nie musi) załatwić aktualizacja CSa..
Błędy w programach się zdarzaly, zdarzają i zdarzać będą.
To jest pewne.
W każdym razie musisz pokombinować conieco, i zapomnieć o idiotwiki, na której znalazleś tą radę z kernelem rt.
Mam nadzieję, ze to nie jest jedyna dokumentacja CSa dostępna na necie.
każdy serwer jest odpalony na innym rdzeniu..[/quote]
Jak rozdzielielś to na rdzenie, osobnymi skryptami?
Pokaż polecenia odpalające na poszczególnych rdzeniach.Ostatnio edytowany przez Jacekalex (2012-02-06 08:29:18)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00005 | SET NAMES latin2 |
0.00121 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.137.223.73' WHERE u.id=1 |
0.00053 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.137.223.73', 1733960917) |
0.00044 | SELECT * FROM punbb_online WHERE logged<1733960617 |
0.00033 | SELECT topic_id FROM punbb_posts WHERE id=193393 |
0.00027 | SELECT id FROM punbb_posts WHERE topic_id=20587 ORDER BY posted |
0.00065 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=20587 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00128 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=20587 ORDER BY p.id LIMIT 0,25 |
0.00093 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=20587 |
Total query time: 0.00585 s |