MaNGOS na VPS hostingu s pamětí 512 MB: Porovnání verzí
Bez shrnutí editace |
Bez shrnutí editace |
||
(Není zobrazeno 11 mezilehlých verzí od stejného uživatele.) | |||
Řádek 4: | Řádek 4: | ||
Samozřejmě 512 MB je hodně málo pro takový herní server a tedy je potřeba si dobře rozmyslet kde a jak maximálně ušetřit paměť. |
Samozřejmě 512 MB je hodně málo pro takový herní server a tedy je potřeba si dobře rozmyslet kde a jak maximálně ušetřit paměť. |
||
==Architektura procesoru== |
|||
Určitě je lepší použít operační systém pro 32-bit architektury i386, i586 či i686 než 64-bit x86_64 či amd64. 64-bit adresování vyžaduje větší dvojnásobnou velikost ukazatelů a tedy i větší nároky na paměť. Přitom základový operační systém může běžet i jako 64-bit, kdežto virtuální stroj uvnitř OpenVZ může běžet jako 32-bit. |
|||
==Odkládací oddíl swap== |
|||
V případě OpenVZ kontejnerové virtualizace se takový parameter uplatní stejně jako operační paměť, protože systém nerozlišuje mezi fyzickou pamětí a diskem. Všechny virtuální stroje sdílí společný adresní prostor. Pokud součet použité paměti přesahuje množství fyzické v počítači, začne se odkládat paměti na disk. |
|||
V případě plné virtualizace lze nastavit odkládací oddíl, ale taková akce nemá valný smysl, protože cílem je běh právě s pamětí 512 MB a nic více. |
|||
==Nepotřebné služby== |
|||
Na serveru může běžet celá řada nepotřebných služeb. V případě virtualizovaných systémů na bázi OpenVZ běží v takovém počítači jen pár základních procesů. Ale i tak je potřeba přes povel '''ps aux''' zkontrolovat a povypínat nežádoucí služby pomocí povelu povelů '''service <služba> stop''' a také zrušit automatický start pomocí povelu '''chkconfig'''. |
|||
Výpis může pak vypadat např. takto: |
|||
<source lang="bash">[root@minimal /]# ps aux |
|||
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND |
|||
root 1 0.0 0.1 2012 884 ? Ss 18:56 0:00 init |
|||
root 35 0.0 0.0 96 20 ? S 18:56 0:00 [init-logger] |
|||
root 313 0.0 0.2 30288 1160 ? Sl 18:56 0:00 /sbin/rsyslogd -c 4 |
|||
root 345 0.0 0.1 3012 876 ? Ss 18:56 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid |
|||
root 393 0.0 0.2 6388 1112 ? Ss 18:56 0:00 crond |
|||
root 457 0.0 0.1 8012 1048 ? Ss 18:59 0:00 /usr/sbin/sshd |
|||
root 522 0.0 0.0 2192 472 ? S<s 18:59 0:00 /sbin/udevd -d |
|||
root 617 0.0 0.1 6524 748 ? Ss 18:59 0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2 |
|||
root 618 0.0 0.0 6524 456 ? S 18:59 0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2 |
|||
</source> |
|||
==Web server== |
==Web server== |
||
Samotný web server Apache vyžaduje pro svůj běh minimum paměti, ale i tak je potřeba jej vůbec na serveru neprovozovat a ušetřit tak jednotky až desítky MB paměti. V kombinaci s PHP může vyžadovat vytížený web server i stovky MB. |
Samotný web server Apache vyžaduje pro svůj běh minimum paměti, ale i tak je potřeba jej vůbec na serveru neprovozovat a ušetřit tak jednotky až desítky MB paměti. V kombinaci s PHP může vyžadovat vytížený web server i stovky MB. |
||
Proto je vhodnější provozovat samotný web úsporně pomocí některého web hostingu zdarma. |
|||
==MySQL server== |
==MySQL server== |
||
Ten je nutný pro běh emulátoru, ale i u něj se dá lecos nastavit v konfiguračním souboru /etc/my.cnf. Především lze nastavit velikost paměťových bufferů pro řazení tabulek. Ve složce /usr/share/mysql lze nalézt ukázkové konfigurační soubory my-small, my-medium, my-large, my-huge.cnf s různou náročností na paměť pro různě zatížené servery. Nejmenší je zde my-small.cnf. Při pohledu do jeho obsahu je patrné, co vše lze v základu nastavit. Odděleně se zde nastavují velikosti pro databázové podsystémy MyISAM a InnoDB. Při prozkoumání tabulek MaNGOSu lze zjistit, že jsou používány oba systémy pro ukládání dat. |
Ten je nutný pro běh emulátoru, ale i u něj se dá lecos nastavit v konfiguračním souboru '''/etc/my.cnf'''. Především lze nastavit velikost paměťových bufferů pro řazení tabulek. Ve složce '''/usr/share/mysql''' lze nalézt ukázkové konfigurační soubory my-small, my-medium, my-large, my-huge.cnf s různou náročností na paměť pro různě zatížené servery. Nejmenší je zde my-small.cnf. Při pohledu do jeho obsahu je patrné, co vše lze v základu nastavit. Odděleně se zde nastavují velikosti pro databázové podsystémy MyISAM a InnoDB. Při prozkoumání tabulek MaNGOSu lze zjistit, že jsou používány oba systémy pro ukládání dat. |
||
Při srovnání běhových proměnných výchozí instalace se šablonami konfigurace zjistíme, že výchozí konfigurace neodpovídá přímo žádné předdefinované. |
Při srovnání běhových proměnných výchozí instalace se šablonami konfigurace zjistíme, že výchozí konfigurace neodpovídá přímo žádné předdefinované. |
||
Řádek 57: | Řádek 87: | ||
=MaNGOS= |
==MaNGOS== |
||
MaNGOS jakožto WoW server emulátor umožňuje nastavit mnoho různých parametrů. Některé mají zásadní vliv na nároky na paměť. |
MaNGOS jakožto WoW server emulátor umožňuje nastavit mnoho různých parametrů. Některé mají zásadní vliv na nároky na paměť. |
||
==Line of sight== |
===Line of sight=== |
||
Výpočty kolizí překážek vyžaduje mimo vyššího výpočetního výkonu také více paměti a tedy pro úsporný server je potřeba tuto funkci ponechat vypnutou. |
Výpočty kolizí překážek vyžaduje mimo vyššího výpočetního výkonu také více paměti a tedy pro úsporný server je potřeba tuto funkci ponechat vypnutou. |
||
==GridUnload= |
===GridUnload=== |
||
Ve výchozím nastavení je nastaveno na hodnotu 1, což znamená, že se má průběžně uvolňovat paměť s jednotlivých sektorů ve světě, když je hráči opustí. V opačném případě při nastavení na 0 si dokáže emulátor nárokovat i několik GB paměti navíc. |
Ve výchozím nastavení je nastaveno na hodnotu 1, což znamená, že se má průběžně uvolňovat paměť s jednotlivých sektorů ve světě, když je hráči opustí. V opačném případě při nastavení na 0 si dokáže emulátor nárokovat i několik GB paměti navíc. |
||
K tomuto parametru se váže také parametr GridCleanUpDelay, který je jako výchozí nastaven na 5 minut. Protože každá paměť použitá pro uchování gridu je zde problém, je vhodné tento parametr nastavit na kratší čas a díky tomu nechat nepoužívané sektory uvolnit z paměti. Lze zde tedy nastavit např. hodnotu 60000 ms což je 1 minuta. |
|||
⚫ | |||
⚫ | |||
⚫ | |||
=Praktické nasazení= |
|||
Byl použit emulátor MaNGOS nainstalovaný dle [http://wiki.wowresource.eu/index.php/MaNGOS_pod_Linuxem tohoto návodu]. |
|||
Již při kompilaci docházelo k selhání s chybou nedostatku paměti, takže i při kompilaci je potřeba si dát pozor, aby neběžely další služby a rozhodně nelze kompilovat za běhu MaNGOSu. |
|||
Testovací systém s nainstalovaným MaNGOSem(bez SD2, bez VMAP, s UDB), MySQL a Apache zabral po startu nějakých '''420 MB paměti'''. Při pokusném běhání z vyšší rychlostí '''.modify aspeed 10''' po celé mapě postupně paměť rostla až k 495 MB. Dále se již výrazně nezvyšovala. |
|||
<source lang="bash">[root@minimal /]# ps aux |
|||
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND |
|||
root 1 0.0 0.1 2012 884 ? Ss 18:56 0:00 init |
|||
root 35 0.0 0.0 96 20 ? S 18:56 0:00 [init-logger] |
|||
root 313 0.0 0.2 30288 1160 ? Sl 18:56 0:00 /sbin/rsyslogd -c 4 |
|||
root 345 0.0 0.1 3012 876 ? Ss 18:56 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid |
|||
root 393 0.0 0.2 6388 1112 ? Ss 18:56 0:00 crond |
|||
root 457 0.0 0.1 8012 1048 ? Ss 18:59 0:00 /usr/sbin/sshd |
|||
root 522 0.0 0.0 2192 472 ? S<s 18:59 0:00 /sbin/udevd -d |
|||
root 617 0.0 0.1 6524 748 ? Ss 18:59 0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2 |
|||
root 618 0.0 0.0 6524 456 ? S 18:59 0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2 |
|||
root 30490 11.5 33.2 254996 174068 pts/5 Sl+ 20:40 4:46 ./mangos-worldd |
|||
root 738 0.2 0.6 19916 3636 pts/1 Sl+ 23:35 0:00 ./mangos-realmd |
|||
root 32646 0.0 0.2 3324 1272 ? S 19:33 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --soc |
|||
mysql 32738 2.8 8.3 136588 43544 ? Sl 19:33 3:05 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql |
|||
</source> |
|||
Kolik takový server utáhne hráčů? Těžko něco takového prakticky otestovat, ale vytížení paměti bude jistě stoupat právě s tím, kolik hráčů se bude pohybovat po jak velké ploše a kolik gridů se bude udržovat v paměti. Takže na takovém serveru může hrát 10 nebo i 50 hráčů, ale vše bude hodně na hraně a server bude na základě nedostatku paměti selhávat. |
|||
Co se týká srovnání nároků na paměť MaNGOSu bez a s SD2, ihned po spuštění jsou nároky téměř stejné a mohou se lišit v jednotkách MB. |
|||
=Závěr a doporučení= |
|||
* Web provozujte na free web hostingu. |
|||
⚫ | |||
* Jednoduše pokud můžete sežeňte si více paměti. Doporučeno je alespoň 1 GB paměti. |
|||
* Pokud byste provozovali např. battleground server, budou se vaši hráči pohybovat po menší ploše ve světě a budou tak menší nároky na paměť. |
|||
* Využívat parametru GridUnload = 1 a snížit hodnotu GridCleanUpDelay. |
|||
Řádek 79: | Řádek 149: | ||
[[Kategorie:WoW]] |
[[Kategorie:WoW]] |
||
[[Kategorie:Linux]] |
Aktuální verze z 5. 2. 2011, 08:56
Stačí pro spuštění a běh WoW emulátoru MaNGOS virtuální server hosting s pamětí pouze 512 MB? Odpověď samozřejmě zní, pro solidní provoz nestačí. Ovšem i tak je zajímavé zkusit, zda vůbec něco takového je možné.
Bojový plán
Samozřejmě 512 MB je hodně málo pro takový herní server a tedy je potřeba si dobře rozmyslet kde a jak maximálně ušetřit paměť.
Architektura procesoru
Určitě je lepší použít operační systém pro 32-bit architektury i386, i586 či i686 než 64-bit x86_64 či amd64. 64-bit adresování vyžaduje větší dvojnásobnou velikost ukazatelů a tedy i větší nároky na paměť. Přitom základový operační systém může běžet i jako 64-bit, kdežto virtuální stroj uvnitř OpenVZ může běžet jako 32-bit.
Odkládací oddíl swap
V případě OpenVZ kontejnerové virtualizace se takový parameter uplatní stejně jako operační paměť, protože systém nerozlišuje mezi fyzickou pamětí a diskem. Všechny virtuální stroje sdílí společný adresní prostor. Pokud součet použité paměti přesahuje množství fyzické v počítači, začne se odkládat paměti na disk.
V případě plné virtualizace lze nastavit odkládací oddíl, ale taková akce nemá valný smysl, protože cílem je běh právě s pamětí 512 MB a nic více.
Nepotřebné služby
Na serveru může běžet celá řada nepotřebných služeb. V případě virtualizovaných systémů na bázi OpenVZ běží v takovém počítači jen pár základních procesů. Ale i tak je potřeba přes povel ps aux zkontrolovat a povypínat nežádoucí služby pomocí povelu povelů service <služba> stop a také zrušit automatický start pomocí povelu chkconfig.
Výpis může pak vypadat např. takto:
[root@minimal /]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2012 884 ? Ss 18:56 0:00 init
root 35 0.0 0.0 96 20 ? S 18:56 0:00 [init-logger]
root 313 0.0 0.2 30288 1160 ? Sl 18:56 0:00 /sbin/rsyslogd -c 4
root 345 0.0 0.1 3012 876 ? Ss 18:56 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root 393 0.0 0.2 6388 1112 ? Ss 18:56 0:00 crond
root 457 0.0 0.1 8012 1048 ? Ss 18:59 0:00 /usr/sbin/sshd
root 522 0.0 0.0 2192 472 ? S<s 18:59 0:00 /sbin/udevd -d
root 617 0.0 0.1 6524 748 ? Ss 18:59 0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2
root 618 0.0 0.0 6524 456 ? S 18:59 0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2
Web server
Samotný web server Apache vyžaduje pro svůj běh minimum paměti, ale i tak je potřeba jej vůbec na serveru neprovozovat a ušetřit tak jednotky až desítky MB paměti. V kombinaci s PHP může vyžadovat vytížený web server i stovky MB.
Proto je vhodnější provozovat samotný web úsporně pomocí některého web hostingu zdarma.
MySQL server
Ten je nutný pro běh emulátoru, ale i u něj se dá lecos nastavit v konfiguračním souboru /etc/my.cnf. Především lze nastavit velikost paměťových bufferů pro řazení tabulek. Ve složce /usr/share/mysql lze nalézt ukázkové konfigurační soubory my-small, my-medium, my-large, my-huge.cnf s různou náročností na paměť pro různě zatížené servery. Nejmenší je zde my-small.cnf. Při pohledu do jeho obsahu je patrné, co vše lze v základu nastavit. Odděleně se zde nastavují velikosti pro databázové podsystémy MyISAM a InnoDB. Při prozkoumání tabulek MaNGOSu lze zjistit, že jsou používány oba systémy pro ukládání dat.
Při srovnání běhových proměnných výchozí instalace se šablonami konfigurace zjistíme, že výchozí konfigurace neodpovídá přímo žádné předdefinované.
my-huge.conf:
- MyISAM
- key_buffer_size = 384M
- max_allowed_packet = 1M
- table_open_cache = 512
- sort_buffer_size = 2M
- read_buffer_size = 2M
- read_rnd_buffer_size = 8M
- myisam_sort_buffer_size = 64M
- thread_cache_size = 8
- query_cache_size = 32M
- thread_concurrency = 8 # Try number of CPU's*2 for thread_concurrency
- InnoDB
- innodb_buffer_pool_size = 384M
- innodb_additional_mem_pool_size = 20M
- innodb_log_file_size = 100M # Set .._log_file_size to 25 % of buffer pool size
- innodb_log_buffer_size = 8M
Na tomto výpise jde vidět, které hodnoty by měly být větší a které stačí i menší.
Výchozí poinstalační nastavení:
- MyISAM
- key_buffer_size = 8M
- max_allowed_packet = 1M
- table_open_cache = 64
- sort_buffer_size = 2M
- read_buffer_size = 128k
- read_rnd_buffer_size = 256k
- myisam_sort_buffer_size = 8M
- thread_cache_size = 0
- query_cache_size = 0
- thread_concurrency = 8 # Try number of CPU's*2 for thread_concurrency
- InnoDB
- innodb_buffer_pool_size = 8M
- innodb_additional_mem_pool_size = 1M
- innodb_log_file_size = 5M # Set .._log_file_size to 25 % of buffer pool size
- innodb_log_buffer_size = 1M
Tedy výchozí nastavení je již samo o sobě nastaveno celkem nízko, ale je možné jej ještě snížit podle potřeby.
MaNGOS
MaNGOS jakožto WoW server emulátor umožňuje nastavit mnoho různých parametrů. Některé mají zásadní vliv na nároky na paměť.
Line of sight
Výpočty kolizí překážek vyžaduje mimo vyššího výpočetního výkonu také více paměti a tedy pro úsporný server je potřeba tuto funkci ponechat vypnutou.
GridUnload
Ve výchozím nastavení je nastaveno na hodnotu 1, což znamená, že se má průběžně uvolňovat paměť s jednotlivých sektorů ve světě, když je hráči opustí. V opačném případě při nastavení na 0 si dokáže emulátor nárokovat i několik GB paměti navíc.
K tomuto parametru se váže také parametr GridCleanUpDelay, který je jako výchozí nastaven na 5 minut. Protože každá paměť použitá pro uchování gridu je zde problém, je vhodné tento parametr nastavit na kratší čas a díky tomu nechat nepoužívané sektory uvolnit z paměti. Lze zde tedy nastavit např. hodnotu 60000 ms což je 1 minuta.
ScriptDev2
Skriptovací systém pro ovládání bytostí je spíše zaměřen na výpočty než paměť, ale přirozeně jeho absence by mohla uspořit teoreticky trochu paměti.
Praktické nasazení
Byl použit emulátor MaNGOS nainstalovaný dle tohoto návodu.
Již při kompilaci docházelo k selhání s chybou nedostatku paměti, takže i při kompilaci je potřeba si dát pozor, aby neběžely další služby a rozhodně nelze kompilovat za běhu MaNGOSu.
Testovací systém s nainstalovaným MaNGOSem(bez SD2, bez VMAP, s UDB), MySQL a Apache zabral po startu nějakých 420 MB paměti. Při pokusném běhání z vyšší rychlostí .modify aspeed 10 po celé mapě postupně paměť rostla až k 495 MB. Dále se již výrazně nezvyšovala.
[root@minimal /]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2012 884 ? Ss 18:56 0:00 init
root 35 0.0 0.0 96 20 ? S 18:56 0:00 [init-logger]
root 313 0.0 0.2 30288 1160 ? Sl 18:56 0:00 /sbin/rsyslogd -c 4
root 345 0.0 0.1 3012 876 ? Ss 18:56 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root 393 0.0 0.2 6388 1112 ? Ss 18:56 0:00 crond
root 457 0.0 0.1 8012 1048 ? Ss 18:59 0:00 /usr/sbin/sshd
root 522 0.0 0.0 2192 472 ? S<s 18:59 0:00 /sbin/udevd -d
root 617 0.0 0.1 6524 748 ? Ss 18:59 0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2
root 618 0.0 0.0 6524 456 ? S 18:59 0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2
root 30490 11.5 33.2 254996 174068 pts/5 Sl+ 20:40 4:46 ./mangos-worldd
root 738 0.2 0.6 19916 3636 pts/1 Sl+ 23:35 0:00 ./mangos-realmd
root 32646 0.0 0.2 3324 1272 ? S 19:33 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --soc
mysql 32738 2.8 8.3 136588 43544 ? Sl 19:33 3:05 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql
Kolik takový server utáhne hráčů? Těžko něco takového prakticky otestovat, ale vytížení paměti bude jistě stoupat právě s tím, kolik hráčů se bude pohybovat po jak velké ploše a kolik gridů se bude udržovat v paměti. Takže na takovém serveru může hrát 10 nebo i 50 hráčů, ale vše bude hodně na hraně a server bude na základě nedostatku paměti selhávat.
Co se týká srovnání nároků na paměť MaNGOSu bez a s SD2, ihned po spuštění jsou nároky téměř stejné a mohou se lišit v jednotkách MB.
Závěr a doporučení
- Web provozujte na free web hostingu.
- Jednoduše pokud můžete sežeňte si více paměti. Doporučeno je alespoň 1 GB paměti.
- Pokud byste provozovali např. battleground server, budou se vaši hráči pohybovat po menší ploše ve světě a budou tak menší nároky na paměť.
- Využívat parametru GridUnload = 1 a snížit hodnotu GridCleanUpDelay.