KODIのメモリ消費を抑える・安定性向上させる設定を考える

新システム(KODI21.*)が安定しないっぽいので、デスクトップを新しい軽量のlabwcに変更した。

ncos1.hatenablog.com

KODIのGUIを操作中に落ちる事が有るが、その場合OSは再起動せずKODIのみ強制終了されKODIのクラッシュログが作成される。

以前、旧システムで音楽再生できなくなった時もKODIが落ちているだけでvpnサーバーは使用可能だった。

 

新システムで異常発生時はシステムごと再起動するので、OS側の問題の可能性が高いと考えているが、KODI側でも可能な限り負荷を下げる様にしたい。

効果有りそうな設定はあまり見当たらなかったが、とりあえずいくつかピックアップ。

KODIのスキン設定のアートワークで、”背景にメディアのファンアートを表示”をOFF

同じく一般で、”スライドアニメーション使用”・”トップバー天気予報表示”・”メディアフラグを表示”をOFF

バッファを”2”にする

Cashing Memory Sizeを変更

cashes entire file on disk storage

ファイル全体をディスクストレージにキャッシュする
にしてみる。

SSDの書き込みが増えるので、最小値の方が良い?

Windows版では、”Buffer Mode”を”No Buffer”にするとグレーアウトするので、NoBufferにしておけば良い?

リモートアプリではなく、ローカルGUIで確認したらRaspberryPiでもグレーアウトしていたので”No Buffer”の方が良さそう。

動画関連を全て無効化できれば良いのだが?

kodi --helpで何かないか確認。

--settings=<filename> Loads specified file after advancedsettings.xml replacing any settings specified

kodi advancedsettings.xml で検索。

作成して記述すれば、詳細設定できるみたい。

Advancedsettings.xml は、デフォルトでは存在しないので、 userdata フォルダー に作成する。 

kodi.wiki

 

GUIレンダリング設定ができるみたい。

注: 一部の GPU/ハードウェア構成には、いくつかの小さな問題 (視覚的な「ちらつき」など) が発生することがあります。このような状況では、モード 2 を試すか、デフォルト (詳細設定を必要としないモード 3) を使用してください。 など ほぼすべての ARM ベースのデバイス ( Android ) では、ちらつきの問題が発生する可能性があります。

ダーティ領域処理を有効にします。ダーティ領域とは、最後のフレーム以降に変更された画面の一部です。変更されていないものを再レンダリングしないことで、GUI を高速化できます。すべての GPU の動作が異なるため、モード 3 のみが誰にとってもちらつきの問題なく動作することが保証されています。このモードでは、CPU/GPU の使用量が削減されますが、GUI の速度は向上しません。

value     result     description
0     Off     The entire viewport is always rendered.
1     Union     All dirty regions are grouped into the smallest possible rectangle. This is typically the fastest mode for slower GPUs due to only making one pass.
2     Cost reduction     Each dirty region is presented separately, in as many passes as there are regions.
3     Whole Screen     The entire screen is rendered if there are any dirty regions. This is a safe default for drivers that clear buffer contents (manifests as blinking or vibrating images). Default
価値     結果     説明
0     オフ     ビューポート全体が常にレンダリングされます。
1     連合     すべてのダーティ領域は、可能な限り最小の長方形にグループ化されます。これは通常、パスが 1 つだけ行われるため、低速な GPU にとっては最速のモードです。
2     コスト削減     各ダーティ領域は、領域の数と同じ数のパスで個別に表示されます。
3     画面全体     ダーティ領域がある場合は、画面全体がレンダリングされます。これは、バッファーの内容をクリアする (画像の点滅または振動として現れる) ドライバーにとって安全なデフォルトです。 デフォルト

例 1の場合

<gui>    
  <algorithmdirtyregions>1</algorithmdirtyregions>
</gui>

ハードウェアの違いによりGUIに問題が発生するかもしれないので注意する必要が有りそう。

0はGPUの負荷が高そうだが、安定性の面では有効化もしれないので試す価値はありそう。

GPUの負荷は高くとも、CPU側の負荷が下がるかも?全て試す価値はありそう。

 

smartredraw は実験的機能みたいで問題が出るかもしれないので慎重に検証したい、と思ったが動画再生関連なので無視。

smartredraw

Note: This is an experimental feature and you might face issues using it. So please be aware of that.

This new feature was introduced in Kodi 18 and if enabled, the GUI process call (and therefore the render call) is only done if anything has changed. The result will be a faster GUI and less load if Kodi plays a video

    true: on
    false: off (Default)

Example:

<gui>    
  <smartredraw>true</smartredraw>
</gui>

スマートリドロー

注: これは実験的な機能であるため、使用すると問題が発生する可能性があります。予めご了承ください。

この新機能は Kodi 18 で導入され、有効になっている場合、GUI プロセス呼び出し (したがってレンダリング呼び出し) は、何かが変更された場合にのみ実行されます。その結果、Kodi がビデオを再生する場合、GUI が高速になり、負荷が軽減されます。

    true: オン
    false: オフ (デフォルト) 

 

RaspberryPiでの作成例。

sudo nano ~/.kodi/userdata/advancedsettings.xml

内容を記述

<gui>
 <algorithmdirtyregions>0</algorithmdirtyregions>
</gui>

 

追記 

そもそも設定の有効化は

kodi --settings=<filename> なので、

kodi --settings=advancedsettings.xml

で良いのか?それともadvancedsettings.xmlファイルを作成すれば適用されるのか説明が見つけられない( ;∀;)

RaspberryPiで自動起動すると思われる設定

sudo nano ~/.config/autostart/kodi.desktop

を編集、--settings=advancedsettings.xml を追記

[Desktop Entry]
Type=Application
Name[ja]=kodi
Exec = /usr/bin/kodi --standalone --settings=advancedsettings.xml

Windowsの場合、プロパティのリンク先に

--settings=advancedsettings.xml を追記

で良い?挙動を確認してみよう。

違った、

Advancedsettings.xml のレイアウトは次のとおり、との事。

 

<advancedsettings version="1.0">
    <setting>value</setting>
    ...
    <setting>value</setting>
</advancedsettings>

 

開始と完了のタグが必要だった。

<advancedsettings version="1.0">

 

</advancedsettings>

 

なので、こうなる。

<advancedsettings version="1.0">

<gui>
  <algorithmdirtyregions>1</algorithmdirtyregions>
</gui>

</advancedsettings>

Windowsでは、1と2では画面のちらつき等でローカルGUIの操作に難がある。

RaspberryPiでは、1・2のオプションはエラーで起動しなかった、デフォルトの3と0は起動した、GPUのドライバーの問題かもしれない。

とりあえず、0で検証してみよう。