gunzipを解凍速度の遅いトラブルシューティングに一度覚えUboot

背景

前にもコードが別のブートローダ、出会いに移植されたときの効率を抽出uboot計上解凍を使用するプロジェクトの必要性、で。最終キャッシュは原因を特定するように構成されています。

https://www.cnblogs.com/zqb-all/p/11443127.html

最適化はubootの10分の1の速度である前に、ubootは二回以上の速度を最適化しました。

開始速度の最適化の際に、解凍を用いた最近のubootでは、完全な円を来て、最終的な結果を期待していなかった、見つかった減圧速度は、非常に遅いです

ubootの解凍速度の上で測定されたとして解凍速度の別のブートローダに移植が、はるかに遅い以前よりだけでなくありません。

測定時間のかかるuboot、数百ミリ秒のメモリの前に同じデータ量、時間のかかる解凍200ミリ秒以下の別のブートローダは、測定された最新のデータが近い2秒です。

キャッシュ

最初は懐疑的、またはキャッシュ、何も食事操作は、キャッシュを確認することは確かに有効化された後、型がライトバック、問題はないです。確認するために、さらに意図さらにこの場合は、確認され、測定された性能を低下させる、ライトスルーとして構成される。

ウォッチドッグ

継続的な調査の後、それが最終的に導入されたパフォーマンスの問題は、ウォッチドッグの設定項目で、ウォッチドッグ時間のかかる展開は、数百ミリ秒から約2秒のフル3倍に増加開きました。

それは解凍速度にどのように影響するかウォッチドッグ?多くの場所では、元のubootプリセットウォッチドッグは犬のフックを養う、ウォッチドッグを適応させる際には、これらのフックが自動的に犬を養う有効になり、ドライブした後にすることができます。

問題は、今では嘘は、zlibライブラリはまた、プレフィードウォッチドッグが有効になった後、解凍サイクルは犬、余分なオーバーヘッドの多くを供給していきます導いたフックの犬です。

当社の実際のウォッチドッグ・タイムアウト時間は16秒までのため、このボードを考慮に入れると、時間のかかる解凍百ミリ秒、犬の餌犬は、すべての操作はzlibでは削除されます、伸長処理で考慮される必要があり、そう単純で粗溶液はありませんそれはすることができます。

指定された長さを抽出した後

より速く多くを得るために、まだ遅く移植前よりも他のブートローダを抽出するために、ウォッチドッグた後、これは正常なので、さらに調査ではありません。

最後に、我々はubootで、このコールgunzipをで怠惰されている問題を発見し、後に直接src_lenと〜0ULとして指定dst_lenと前のファイルサイズを解凍するには何の解決はありません。

これは、デフォルトsrc_len =〜0UL、dst_len =〜0UL、高校のunzipコマンドから達成され、解凍後のファイルサイズはオプションであるかどうかを指定します

私たちは、私が指定しただけでなく、効率を持っていないを期待していなかった、境界の外確かに、十分な大きさではなく、割り当てられているので、私は、解凍ライブラリーの裁量を聞かせて、単純に望んでいました。

ソリューションは、尾から読み出したパラメータはgunzip解凍機能として渡された、圧縮前の元のファイルサイズを圧縮します。

ここで解凍コマンドの呼び出しは、ベルトの長さとすることなく長さの差を実証するために、Minicomのタイムスタンプを使用して、直接コンソールであります

それだけでは430ms程度かかり、送信元アドレスと宛先アドレスを指定します

[2019-11-25 09:59:43.014] => version;unzip 40901000 40000000
[2019-11-25 10:00:10.359] U-Boot 2018.05 (Nov 25 2019 - 09:20:58 +0800) Allwinner Technology
[2019-11-25 10:00:10.385] 
[2019-11-25 10:00:10.385] arm-linux-gnueabi-gcc (Linaro GCC 7.2-2017.11) 7.2.1 20171011
[2019-11-25 10:00:10.385] GNU ld (Linaro_Binutils-2017.11) 2.28.2.20170706
[2019-11-25 10:00:10.815] Uncompressed size: 6553388 = 0x63FF2C

長さを指定して、送信元アドレスと宛先アドレスを指定して、それが170ms程度かかり

[2019-11-25 10:00:10.831] => version;unzip 40901000 40000000 0x63FF2C
[2019-11-25 10:00:30.486] U-Boot 2018.05 (Nov 25 2019 - 09:20:58 +0800) Allwinner Technology
[2019-11-25 10:00:30.486] 
[2019-11-25 10:00:30.486] arm-linux-gnueabi-gcc (Linaro GCC 7.2-2017.11) 7.2.1 20171011
[2019-11-25 10:00:30.487] GNU ld (Linaro_Binutils-2017.11) 2.28.2.20170706
[2019-11-25 10:00:30.646] Uncompressed size: 6553388 = 0x63FF2C

このリンクhttps://www.cnblogs.com/zqb-all/p/11966601.html

おすすめ

転載: www.cnblogs.com/zqb-all/p/11966601.html
おすすめ