◎メインサイトとブログとSNS
VSRX-2020 - オリジナルOSやライブラリ、アプリケーションのリファレンスとプログラミングなどの各種テクニックを公開しているメインサイト
RED - 音楽・ドラマ・アイドル・ゆるキャラ・食べ物・副業・公営ギャンブルなどの話題を取り上げるブログ
Instagram / Youtube
最近の記事

2020年10月20日

PVL Kernel 5.9.1-v3 released [64bit Custom Linux kernel for Ubuntu]

[PVL Kernel binary and source]
PVL kernel binary and source Download

[pvl.patch and config file]
pvl.patch and config file Download

The PVL Kernel is for Ubuntu 18.04 LTS(64bit) and is aimed by adding some patches to Linux Kernel.

[fsync for Proton]
If the game doesn't start on Steam, set the following command as a start option.

PROTON_NO_ESYNC=1 PROTON_NO_FSYNC=1 %command%


[Full tickless]
1.Edited /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="nohz_full=1"


2.Make grub config
$ sudo grub-mkconfig -o /boot/grub/grub.cfg

3.reboot system

PVL kernelはオリジナルOS「Phantom Valkyrie Linux」向けに作成したカスタムカーネルです。Ubuntu 18.04 LTS(Ubuntu 20.04 LTSでの動作確認はしていません)に対応しています。CPUスケジューラー「CFS」「BMQ」「PDS」「MuQSS」のいずれかを導入し、複数のパッチを適用しています。通常のUbuntu公式カーネルよりレスポンス性能とパフォーマンスを高めています。
マルチキューI/Oスケジューラーは、MQ-deadline・Kyber・BFQ-MQをカーネルパラメーターで選択可能になっています。



[based kernel source]
- linux kernel 5.9(https://cdn.kernel.org/pub/linux/kernel/v5.x)

[Optimized kernel configuration]
- CPU shceduler -> "CFS"
- Default I/O scheduler -> kyber
- Processer family -> Generic X86_64
- Kernel Compression mode -> zstd
- Preemption Model -> Preemptible Kernel(Low-Latency Desktop)
- CPU Timer frequency -> 750Hz
- RCU boost delay -> 500Hz
- Compiler optimization level -> Optimize for more performance(-O3)
- UKSM on
- Default CPUFreq Governor -> ondemand
- HD-audio pre-allocated buffer size 4096
- BBR TCP Congestion Control
- Built on the GCC 10.1.0
- CPU idle governor -> TEO
- fsync for Wine/Proton on
- PCIe ACS Override on
- ZSTD kernel and initram support
- TSX -> auto
- FSGSBASE support
- Timer tick handling -> Full dynticks system
- Schefuler features -> Enable utilization clamping for RT/FAIR tasks -> Number of supported utilization clamp buckets(5)
- Zen Interactive Tuning on
Mem dirty before bg writeback..: 10% -> 20%
Mem dirty before sync writeback: 20% -> 50%
Background-reclaim hugepages...: no -> yes
Scheduling latency.............: 6 -> 4ms
Minimal granularity............: 0.75 -> 0.4ms
Wakeup granularity.............: 1 -> 0.5ms
CPU migration cost.............: 0.5 -> 0.25ms
Bandwidth slice size...........: 5 -> 3ms
Ondemand sampling down factor..: 1 -> 5
- Meltdown,spectre_v1,spectre_v2 : Mitigation

[Applied patches]
- linux 5.9.1 patch(https://www.kernel.org/)
- CK1 patch( http://ck-hack.blogspot.com/ )
0004-Create-highres-timeout-variants-of-schedule_timeout-.patch
0006-Convert-msleep-to-use-hrtimers-when-active.patch
- UKSM patch(https://github.com/sirlucjan/kernel-patches)
- add-acs-overrides.patch(https://aur.archlinux.org/cgit/aur.git/tree/add-acs-overrides.patch?h=linux-vfio)
- Introduce per-task latency_nice for scheduler hints(https://lkml.org/lkml/2020/2/28/166 | https://www.phoronix.com/scan.php?page=news_item&px=IBM-Latency-Sensitive-Idle)
- LL patches(https://github.com/sirlucjan/kernel-patches)
0001-LL-kconfig-add-750Hz-timer-interrupt-kernel-config-o.patch
0003-sched-core-nr_migrate-256-increases-number-of-tasks-.patch
0004-mm-set-2048-for-address_space-level-file-read-ahead-.patch
- Zen Patches( https://github.com/zen-kernel/zen-kernel/tree/5.9/master )
ZEN_INTERACTIVE_Base_config_item.patch
ZEN_INTERACTIVE_Tune_CFS_for_interactivity.patch
ZEN_INTERACTIVE_Increase_default_writeback_thresholds.patch
ZEN_INTERACTIVE_Tune_ondemand_governor_for_interactivity.patch
ZEN_INTERACTIVE_Enable_background_reclaim_of_hugepages.patch
ZEN_Add_VHBA_driver.patch
ZEN_Enable_additional_CPU_Optimizations_for_GCC_v10_1.patch
ZEN_Unrestrict_CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch
- futex(https://github.com/sirlucjan/kernel-patches)

[dropped patches]
- Project C 5.9-r0 patch( https://gitlab.com/alfredchen/linux-prjc/-/releases/v5.8-prjc-r2 | http://cchalpha.blogspot.com/ )
- Aufs patch( http://aufs.sourceforge.net/ )
- MuQSS patch( http://ck.kolivas.org/patches/5.0/5.9/5.9-ck1/patches/ | http://ck-hack.blogspot.com/ )


◇インストール方法
dpkgコマンドを使ってインストール可能です。また、同梱しているインストールスクリプトを端末で実行する事でもインストールする事が出来ます。


$ ./install.sh


◇ダウンロード方法
OneDriveのアカウントが無くてもダウンロードは出来ます。ダウンロードしたいファイルの上で右クリックするとメニューが表れます。
Screenshot from 2019-08-25 11-49-35.png
Screenshot from 2019-08-25 11-49-49.png

◇I/Oスケジューラー確認方法
現在使っているI/Oスケジューラーの確認方法は、端末で以下のコマンドを実行する事で出来ます。

$ cat /sys/block/sd*/queue/scheduler

I/Oスケジューラーを変更するには、以下のコマンドを実行します。

# echo 変更したいスケジューラー > /sys/block/sda/queue/scheduler

設定を永続化するには、起動時に「elevator=変更したいスケジューラー」を付けます。

◇マルチキュー設定方法
マルチキューを使えるようにするには、カーネルパラメータに「scsi_mod.use_blk_mq=1」を追加してシステムを起動します。また、設定を永続化したい場合には、/etc/sysctl.d/90-override.confに「scsi_mod.use_blk_mq=1」を追加して再起動する必要があります。

また、SSDやHDDの種類によって自動的にI/Oスケジューラーを変更する設定の永続化を行うには、以下のようなファイルを作成します。
https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%AE%E6%9C%80%E5%A4%A7%E5%8C%96#.E3.82.AB.E3.83.BC.E3.83.8D.E3.83.AB.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF.E3.81.AE.E8.AA.BF.E6.95.B4

◇/etc/udev/rules.d/60-ioschedulers.rules
# set scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
# set scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"

posted by takatan at 17:06| 大阪 ☀| アプリケーション公開 | このブログの読者になる | 更新情報をチェックする