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

2021年02月24日

Noir Linux Kernel 5.10.18 released [64bit Custom Linux kernel for Ubuntu/Debian]

The Noir Linux Kernel is 64bit Custom Linux kernel for Ubuntu/Debian,and also this kernel has some useful patches applied.
It has improved response and performance compared to the regular Ubuntu official kernel.It is especially effective for games and desktop applications.
The default CPU scheduler for the Noir linux kernel is "PDS",and the default I/O scheduler is "Kyber".

Noir Linux kernelはUbuntu/Debianに対応したカスタムカーネルです。
複数のパッチを適用しています。通常のUbuntu公式カーネルよりレスポンス性能とパフォーマンスを高めています。デスクトップ用途・サーバ用途・ゲーミング用途で高い効果を発揮します。
マルチキューI/Oスケジューラーは、MQ-deadline・Kyber・BFQ-MQ・i10をカーネルパラメーターで選択可能になっています。
Noir linux kernelのデフォルトのCPUスケジューラーはPDS、デフォルトのI/OスケジューラーはKyberです。

[Download Noir Linux Kernel(binary,source code,patch)]
Download Noir linux kernel (binary,source code,patch)

[Noir Linux Kernel patchset for vanilla kernel]
https://github.com/takabrk/viper/blob/main/build_noir_kernel/510/patches/noir.patch

[Change point]
- Updated to linux 5.10.18

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

[Optimized kernel configuration]

- CPU shceduler -> PDS
- Default I/O scheduler -> Kyber
- Processer family -> Generic X86_64
- Kernel Compression mode -> zstd
- Preemption Model -> Preemptible Kernel(lowlatency desktop)
- CPU Timer frequency -> 750Hz
- RCU boost delay -> 339
- Compiler optimization level -> Optimize for more performance(-O3)
- Timer tick handling -> Full dynticks system
- Enable utillization clamping for RT/FAIR tasks
- UKSM support
- Default CPUFreq Governor -> performance
- HD-audio pre-allocated buffer size 4096
- BBR2 TCP Congestion Control
- Built on the GCC 10.2.0
- CPU idle governor -> TEO
- PCIe ACS Override support
- futex for Wine/Proton support
- ZSTD kernel and initram support
- TSX -> auto
- Aufs support
- Zen Interactive Tuning support
Mem dirty before bg writeback 10% -> 20%
Mem dirty before sync writeback 20% -> 50%
Background-reclaim hugepages no -> yes
[CFS CPU Scheduler]
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
Task rebalancing threshold 32 -> 256
Ondemand sampling down factor 1 -> 5
[MuQSS CPU Scheduler]
Scheduling interval 6-> 4 ms
ISO task max realtime use 70 % -> 25 %
Yield type 1 -> 0

- Meltdown,spectre_v1,spectre_v2 : Mitigation
- Clear Linux support
- rt_runtime 95000 -> 98000
- rq_affinity 2
-Aufs support


[Applied patches]

- linux 5.10.18 patch( https://www.kernel.org/ )
- i10( https://github.com/i10-kernel/upstream-linux | https://lore.kernel.org/lkml/20201112140752.1554-1-rach4x0r@gmail.com/ )
- CK1 patch( http://ck-hack.blogspot.com/ )
- Zen Patches( https://github.com/torvalds/linux/compare/master...zen-kernel:5.10/zen-sauce )
- futex-multiple-wait from Zen kernel( https://github.com/torvalds/linux/compare/master...zen-kernel:5.10/futex-multiple-wait-v3 )
- patches( https://github.com/sirlucjan/kernel-patches/tree/master/5.10 )
 0001-UKSM-for-5.10.patch
 0001-clearlinux-patches.patch
 0001-LL-kconfig-add-750Hz-timer-interrupt-kernel-config-o.patch
 0004-mm-set-8-megabytes-for-address_space-level-file-read.patch
 0002-init-Kconfig-enable-O3-for-all-arches.patch
 0003-block-set-rq_affinity-2-for-full-multithreading-I-O.patch
 0001-rapl-patches.patch
 other/0001-v4l2loopback-5.10-initial-merge.patch
- seccomp: Implement syscall isolation based on memory areas( https://lore.kernel.org/lkml/50a9e680-6be1-ff50-5c82-1bf54c7484a9@gmail.com/T/#m9f74cfb8d6f5356a428e88b097ba3fda832179fa )
- Aufs patch( http://aufs.sourceforge.net/ | https://sourceforge.net/projects/lxpup/files/Other/huge-kernels/kernel-5.10-aufs-changes/)
- Introduce AVX512 optimized crypto algorithms( https://lkml.org/lkml/2020/12/18/626 )
- Reiser4( https://sourceforge.net/projects/reiser4/files/reiser4-for-linux-5.x/ )
- NTFS read-write driver GPL implementation by Paragon Software ( https://lore.kernel.org/lkml/20201225135119.3666763-1-almaz.alexandrovich@paragon-software.com/ )
- le9( https://github.com/hakavlad/le9-patch )
- Enable fp16 display support for DCE8+( https://lists.freedesktop.org/archives/dri-devel/2020-December/292660.html )
- BBR2( https://github.com/torvalds/linux/compare/master...zen-kernel:5.10/bbr2 )
- Project C 5.10-r2 patch( https://gitlab.com/alfredchen/linux-prjc/-/releases | http://cchalpha.blogspot.com/ )


[dropped patches]

- MuQSS( http://ck-hack.blogspot.com/ )
- muqss_Fix_build_error_on_config_leak.patch( https://github.com/zen-kernel/zen-kernel/commit/6aefea555ae66883483540d43c2024acecf61599 )
- PREEMPT_RT patch( https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/ )
- Improve preemptive ENOSPC flushing( https://lore.kernel.org/linux-btrfs/cover.1602249928.git.josef@toxicpanda.com/ )
- 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 )


◇インストール方法
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"



[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


[AVX-512 optimized crypto algorythms]

1.Edited /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="use_avx512=1"
2.Make grub config
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
3.reboot system


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