Компилиране на ядро под Linux (Game Server Kernel)

Дискусии и проблеми свързани с Linux.
Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Компилиране на ядро под Linux (Game Server Kernel)

Мнение от hackera457 » 12 Май 2018, 17:01

В тази тема ще ви покажа как можете да си компилирате ядро под CentOS както и настройки, които биха помогнали за 1000 FPS. Държа да отбележа, че компилацията на ядрото е нужна и за приспособяване на ядрото към конкретната машина /оптимизирането му за машината като се активират необходимите драйвери и модули/.
Преди да стартираме процеса е необходимо да се логнем като root. Това става с помоща на командата:

Код за потвърждение: Избери целия код

sudo su
Въвеждате си паролата. Сега е момента да инсталираме необходимите пакети, нужни ни за компилирането.

Ако ще компилирате под CentOS са ви необходими следните пакети:

Код за потвърждение: Избери целия код

yum -y groupinstall "Development Tools"
yum -y install ncurses-devel hmaccalc zlib-devel bc binutls-devel elfutils-libelf-devel openssl-devel
Ако ще компилирате на Debian, необходимите пакети са:

Код за потвърждение: Избери целия код

apt-get install build-essential libncurses5-dev libelf-dev bc bison flex libssl-dev
След като ги инсталирате пристъпваме към изтегляне на ядрото. За да имате 1000 FPS е нужно вашето ядро да бъде Real-Time. Това става като изтеглите патч и го инсталирате при ядрото преди процеса на компилация:

Код за потвърждение: Избери целия код

cd /usr/src
wget http://kernel.org/pub/linux/kernel/v4.x/linux-4.16.7.tar.xz
Сега да изтеглим пача за Real Time

Код за потвърждение: Избери целия код

wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/4.16/
Сега идва ред да разархивираме ядрото

Код за потвърждение: Избери целия код

tar xvJf linux-4.16.7.tar.xz
Сега трябва да влезем в папката на ядрото

Код за потвърждение: Избери целия код

cd linux-4.16.7
Сега е време да прибавим пача:

Код за потвърждение: Избери целия код

xzcat ../patch-4.16.7-rt1.patch.xz | patch -p1
След като вече сме инсталирали пача е време да пристъпим към конфигурация на ядрото.

Код за потвърждение: Избери целия код

make menuconfig
Ето и настройките, които трябва да направите и ви ги препоръчвам:

Код за потвърждение: Избери целия код

General Setup
--------------------------------
(-server) Local version -append to kernel-release
Включване Automatically append version information to the version string
Kernel Compression ---> (XZ)
Изключване Auditing Support  
Timer tick handling -----> ( Full dynticks system (tickless) )
Aktivirane Full dynticks system on all CPUs by default  (except CPU 0)
Изключване Old Idle dynticks config

Enable Block Layer
---------------------------------
IO Schedulers --->
	* Default I/O Scheduler (Deadline)

Processor Type and features
---------------------------------
Изключване Linux Guest Support
Processor family --> (Spored processora)
Изключване SMT (Hyperthreading) scheduler support
Preemption Model ---> (Fully Preemtible Kernel (RT))
Timer Frequency --> (1000 HZ)

Power Managment and ACPI support
---------------------------------------
Изключване Suspend to RAM and standby
Изключване Hibernation
Изключване Power Managment Debug support 
CPU Frequency Scaling ---->
	* Default CPUFreq governor ---> (performance)

Network Options
--------------------------------------------------
	* Изключване QoS and/or far queueing
	
Device Drivers
----------------------------------
Изключване Watchdog Timer Support 
Включване Real Time Clock

Kernel hacking
----------------------------------
Изключване на всичко

Virtualization -- > Изключване
Auditing Support не може да се изключи под Debian!!

Запазваме конфигурацията. Като запазвате настройките, файла трябва да е .config както си е по default, а не да добавяте пред него и зад него някакви имена
И сега е време за същинския процес на компилация има много начини, но начина, който аз ползвам е:

Код за потвърждение: Избери целия код

make -j8
make modules_install
make install
Рестартирате машина и избирате в Grub нашето компилирано ядро

Резултата при sys_ticrate 1200 -pingboost 3 /1000 FPS с нормални временни дропове/
Изображение
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Компилиране на ядро под Linux

Мнение от Marinovv » 12 Май 2018, 17:07

Добре де, но на моя сървър при въвеждане на sys_ticrate 1200 -pingboost 3 и го проверя с команда stats постоянно ми е все 1000 фпс, че и малко отгоре, както на тебе. Това реално FPS ли ми е на мен или трябва да компилирам някак ядрото си?! На linux debian съм. Извинявам за тъпия въпрос.
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Компилиране на ядро под Linux

Мнение от hackera457 » 12 Май 2018, 17:10

Marinovv написа: 12 Май 2018, 17:07 Добре де, но на моя сървър при въвеждане на sys_ticrate 1200 -pingboost 3 и го проверя с команда stats постоянно ми е все 1000 фпс, че и малко отгоре, както на тебе. Това реално FPS ли ми е на мен или трябва да компилирам някак ядрото си?! На linux debian съм. Извинявам за тъпия въпрос.
Това е реалното, попринцип би могло и да не го компилираш, въпроса е, че при компилираното ядро натоварването на процесора е по-малко, а и е нужно да го оптимизираш за конкретна машина, тъй като по-подразбиране е направено така че поддържа всякакви машини
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Компилиране на ядро под Linux (Game Server Kernel)

Мнение от Marinovv » 05 Сеп 2018, 20:52

wget http://kernel.org/pub/linux/kernel/proj ... 1.patch.xz

Not Found.

Очаквам да оправиш линкът, защото сега съм стигнал до половината. Ще изчакам да оправиш това и ще продължа с компилацията.
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
delirium
Извън линия
Потребител
Потребител
Мнения: 40
Регистриран на: 15 Окт 2016, 16:15
Местоположение: Dorado
Получена благодарност: 16 пъти
Обратна връзка:

Компилиране на ядро под Linux (Game Server Kernel)

Мнение от delirium » 05 Сеп 2018, 21:25

Очакваш?? ОЧАКВАШ??!
Размърдай си малко мозъка и сам си го намери?
https://mirrors.edge.kernel.org/pub/lin ... s/rt/4.16/

Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Компилиране на ядро под Linux (Game Server Kernel)

Мнение от hackera457 » 05 Сеп 2018, 22:41

Обновил съм линка, когато съм тествал урока смея да кажа, че линка си работеше идеално
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Компилиране на ядро под Linux (Game Server Kernel)

Мнение от Marinovv » 05 Сеп 2018, 22:47

delirium написа: 05 Сеп 2018, 21:25 Очакваш?? ОЧАКВАШ??!
Размърдай си малко мозъка и сам си го намери?
https://mirrors.edge.kernel.org/pub/lin ... s/rt/4.16/
Сори.

А между другото xzcat ../patch-4.16.7-rt1.patch.xz | patch -p1 фиксни го. Няма такова /patch-4.16.7-rt1.patch.xz а това patch -p1 един бог знае кога се пише.
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Компилиране на ядро под Linux (Game Server Kernel)

Мнение от hackera457 » 06 Сеп 2018, 17:46

Marinovv написа: 05 Сеп 2018, 22:47
delirium написа: 05 Сеп 2018, 21:25 Очакваш?? ОЧАКВАШ??!
Размърдай си малко мозъка и сам си го намери?
https://mirrors.edge.kernel.org/pub/lin ... s/rt/4.16/
Сори.

А между другото xzcat ../patch-4.16.7-rt1.patch.xz | patch -p1 фиксни го. Няма такова /patch-4.16.7-rt1.patch.xz а това patch -p1 един бог знае кога се пише.
Ами просто добави там, където си го свалил, преди да публикувам урока съм го тествал и работи всичко, явно някой пакет не си инсталирал преди началото на процеса, ако ги има всички инсталирани неща от началото на урока проблеми няма. Пътищата в урока са примерни, ако си ги запазвал другате укажи правилния път до файла
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Компилиране на ядро под Linux (Game Server Kernel)

Мнение от Marinovv » 08 Сеп 2018, 19:59

Добре де направих всичко до конфигурацията. Запазих с името chochko.config. По стандарт ми излезе само .config, но аз добавих и име.
сега като напиша make -j8 излиза

Код за потвърждение: Избери целия код

scripts/kconfig/conf  --silentoldconfig Kconfig
***
*** Configuration file ".config" not found!
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***
scripts/kconfig/Makefile:40: recipe for target 'silentoldconfig' failed
make[2]: *** [silentoldconfig] Error 1
Makefile:514: recipe for target 'silentoldconfig' failed
make[1]: *** [silentoldconfig] Error 2
make: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/kernel.release'.  Stop.
make: *** Waiting for unfinished jobs....
Да не би на мястото на -j8 да иска друго име?
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Компилиране на ядро под Linux (Game Server Kernel)

Мнение от hackera457 » 09 Сеп 2018, 19:59

Marinovv написа: 08 Сеп 2018, 19:59 Добре де направих всичко до конфигурацията. Запазих с името chochko.config. По стандарт ми излезе само .config, но аз добавих и име.
сега като напиша make -j8 излиза

Код за потвърждение: Избери целия код

scripts/kconfig/conf  --silentoldconfig Kconfig
***
*** Configuration file ".config" not found!
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***
scripts/kconfig/Makefile:40: recipe for target 'silentoldconfig' failed
make[2]: *** [silentoldconfig] Error 1
Makefile:514: recipe for target 'silentoldconfig' failed
make[1]: *** [silentoldconfig] Error 2
make: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/kernel.release'.  Stop.
make: *** Waiting for unfinished jobs....
Да не би на мястото на -j8 да иска друго име?
Както ти казах вероятно си пропуснал да инсталираш някой пакет, под кой Linux се опитваш да компилираш?
Урока преди да го пусна съм го тествал, това -j8 може с него, а може и без него, попринцип спомага една идея по-бързо да се компилира ядрото
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Linux”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта