FC2ブログ
2015/02/27

OpenIndianaを使うのは暫くお休み

Openindianaのhipster-2015ブランチを使っていて、
アップグレード工事中でintelのグラフィック機能が使えなくなったのを機に、
Openindianaが使っていて楽しいOSだったか振り返ると

*女性的ないい雰囲気が個人ファイルをいれると汚れた(色気画像だけではない、いろいろなドキュメントも)
アップグレード毎にいい雰囲気が失われている
*ローカルに保存した動画の再生がもたつく。ストリーミングはなんなく再生。
IOの調整がなってないせいで、グラフィックドライバやXのせいでもない
*いつ頃からか起動が遅い。数分かかる。
* pkg updateがいらつく。ダウンロードで回線速度をぜんぜんフルに使っていない
*デバイスドライバーが少ない。USB3.0にいたっては皆諦めている、しかもSTREAMS自体が遅いなどという
*個人ごときでzoneなどやるつもりはなかったし、
このブログのアクセス解析やネットの空気では皆もサーバーOSとしてだけつかっているようだ
*VLCを-mtune=nativeでコンパイルしていれるのに苦労したし、それでも動画がもたつく
*管理コマンドが難しい
*将来への備えが悪い。USB3.0をあきらめている。

結果、ただの使い辛いOSになってしまった。

これからは流れにのってArchLinuxにします。
インストールが煩雑だがなんとHDD搭載でも10秒ぐらいで起動するなんて!
このことと緑色のMateデスクトップ環境が雰囲気がよくて、
ファイルをぶち込んでも雰囲気が汚れない。
手放せない。

みなさんは結局Openindianaって何だと思います?コメントください。企業でしょうがなく使う人も多そう。

追記:SmartOSというillumosの仲間があり、joyentという企業ががんばってサポートしているようです。
そっちのほうがまだ活力があるし、
GUIは最初からは使えないがどうもXorgやGNOME2.32のバイナリパッケージが用意されているようです。

追記:非公開コメントが来ました。でも一言引用します。サーバーでしか使えないのかと疑問を持っているようです。
おおもとのSolaris自体が、本当はSunのSPARCマシン向けにできていて、あんまりx86のドライバーを充実させたくなかった意図が透けて見えます。
日本人が一人で無線LANドライバrwnを書いている、Openindiana向けのデバイスドライバーを作るのはそう難しいことではないようです。
デスクトップで使いたいとなると、まずビデオドライバのDRI、HD動画再生が必須、ホットプラグの有効化、ntfs-3gやexfatを扱う、USB高速転送など、
頑張ればUNIXなのでできないことはないはずですが、どうもOpenBSDの機能拡張を避ける病気が移っている気がする。
昔は大体Sunが機能を増やしてくれたが、不条理な形でOracleからコミュニティにあてつけされたコード管理。結局商売につぶされたOpenSolarisです。

追記:そう言えば、常に最新版であるArchLinuxを使っていると、
なんかしらないがLinuxが段々Solaris系に近づいているように思えます。
systemdが導入され、あらゆるシステムの管理の機能はsystemdが提供するようになっています。
initと違い並列実行でやたら早く立ち上がり、
svcadmを思わせるsystemctlコマンド、何かにつけて*ctlコマンドで設定を変える、
直接デーモンを起動からサービスファイルで指示をするようになりました。
ネットワークデバイスは長ったるい名前になり、Solarisのディスクみたいです。
それでもまだサービスファイルはテキストファイルであるなど、一応ハックは効くみたいです。
スポンサーサイト

続きを読む

2015/01/06

"Openindiana very slow" issue

My blog written in japanese.
but I found a google suggest "Openindiana very slow"
Wa?
We all feel Openindiana is slow !?
I found what are problems.
So, I write in broken english.

Default Scheduler = FX


if my memory is correct,
Default scheduler is not TS(Time sharing) on Openindiana.
then , one multithread application be able to use only 1CPU.
check /etc/dispadmin.conf , and

# dispadmin -d TS


to choose time sharing scheduler to default. you can also choose FSS.

slow I/O problem


intel laptop graphics and USB 2.0 are requires more large I/O access.
tune /etc/system parameters for desktop use.

#STREAMS speed up
strmsgsz=262144
strctlsz=262144
#block io
maxphys=262144


you can also tune shared memory allocate , semaphore max ids.

Video playing more smooth


Disable ZFS file level prefetch for smooth video playing.
many small seqencial access cause choke ZFS prefetch.

"contract" hack for speed up


Openindiana on HP Probook 6550b (CPU:Core i3 350M)
can run 4 threads.
multiplie by 3

# prctl -n project.max-contracts -v 12 -r -i project 0


2014/11/29

gcc最適化コンパイル -fipa-ptaでさらに速くする

-O1 -fipa-pta


gccのこのオプションは徹底的に最適化の可能性を調べてくれるのでコンパイルタイムが明らかに多くなります。
実行時のメモリーも多く必要だそうですが
ffmpeg-2.4.5をこのオプション付きでコンパイルしてVLCで動画を見ると、だいぶカクカクが少なくなります。
はい。-O1は-O2でもいいかもしれませんが、-fipa-ptaは-O3とは相性が合わない(!)
2010年頃のgccには-fipa-ptaによる最適化失敗があるので新しいgccで。
2014/11/17

Openindianaで 動画 音声 YouTube やりたい放題

この記事は他の記事でオフトピックぎみだった文を載せ直すものです。
Openindianaで、テクノロジーのことだらけやっていて、何か物足りなくないですか?
そう、ちょっとは普通のパソコンと同じように使いたい。ちょっとは融通がきいてほしい。
それには、動画や音声の再生や、YouTubeを見れることが感じんです。
しかしオタクでないと解決はきついです。

本気でやりたいならNVIDIAのグラボをいれよう

Solarisむけの企業が出してくれるドライバーはNVIDIAだけです。
ノートパソコンでもしょぼくていいからNVIDIAのチップが入っているものを選びましょう。
何もしなくともまともにHD動画が再生できるには。
optimusというNVIDIAのと他のグラボを切り替える機能はつかえません。

まずhipsterをいれよう

hipsterにはソフトウェア側が最新に近くなっていて
libxcbが入るなど、いろいろ新しい3Dや動画のプログラムを入れるのに都合がいいです。
2016年:ORACLEがオープンソースのカーネルモジュールを公開、バックポートでOpenSXCEという亜種から持ってきた、テスト中のドライバーdrm_gem_kmsでintelのグラフィックが使える可能性はあります。
これはひょっとすると自分で入れないといけないのかな?

Sunご自慢のZFSの機能を切らないといけない


/etc/systemに

set zfs:zfs_prefetch_disable = 1


ZFSの機能の一つに、ファイルデータ先読み機能があるが、これの説明を読むと
ちょこまかシーケンシャルアクセスされるとCPUがよほどないと追いつかないとある。
ちょこまかシーケンシャルアクセスはちょうど動画再生で行われるものです。
一方の動画プレイヤーはメモリーにデータをキャッシュするので先読み機能は余計なもので、カクカク動画になります。
なおスケジューラはご自慢のFSSがいいです。

Xorgをちょっと速くする

セキュリティに厳しくなければ、
/etc/security/exec_attrを見て権限を付け足すとか
Forced Privilege:solaris:cmd:::/usr/bin/amd64/Xorg:uid=0
これぐらいの権限の設定はLinuxだとデフォルトになっているはずですが?
/etc/systemというファイルでカーネルパラメータの変更ができる。デバイスドライバーへの転送量を変えます。

set strmsgsz = 262144
set strctlsz = 4096

これで再起動。strctlszは8192にするとさらに速くなる?
なおこれでネットワークも速くなるでしょう。

うそ??

パフォーマンスチューニングの記事に驚愕のデフォルト設定の事実が。

intelでは希望がある

intelのグラフィック機能(CPUでなく)を使っている方は、
Section "Device"
Identifier "Card0"
Driver "intel"
Option "XVideo" "false" #Xvが逆に速度をおとすパターンあり
Option "LVDS24Bit" "true"
Option "EXAOptimizeMigration" "true"
Option "XvMC" "true"
EndSection

こんな/etc/X11/xorg.confを書いてみてください。とくにnehalem世代のパソコン。しかしこれでも少し重たいかもしれません。
compizは、余計なものと思っているかたが多そうですが、有効にすると速くなります。システム>外観>視覚効果
Xorgは1.7.7ですが、すでにアップストリームでパッチが当たっていてXorg 1.14を入れる準備ができているらしい。
https://www.illumos.org/issues/4044
なんとXorgを1.17に一気にアップグレードする動きがhipsterにあります。
いろいろなパソコン、サーバーで問題なく高速にXorgが動くようになるでしょう。

OpenCSWを導入する

sfe.opencsw.orgの説明を英語だけど読んで、
ffmpegやVLCを導入できます。機能はGOMに匹敵するあのVLCだよ!
ラッキー!簡単ですがよく見ると何か肝心な機能が足りないのがわかる。
動画のウィンドウはなぜか別に出てくるし、字幕機能が使えない。どうした?

VLCをコンパイルすれば、心配ない

ここからは専門知識が必要です、しかしOpenindianaを使っているほとんどの人は持っている知識です。
必要なパッケージはほとんど先ほどのOpenCSWから入りました。libxcb,xcb-utilとxcb-protocolsパッケージもいれたら、
最新版のVLC-2.1.5をソースコードからいれます!
Openindianaを使っているほとんどの人はオタクだと考えられるので詳しくは自分で調べてください。

Solarisの系統はコンパイルにSunStudioを使う場合が多いと思われますが、私はgccをつかっています。OSSはその方が楽になってゆくのかな?

luaが使えると、字幕が出てくれるのと、動画サイトの動画が見れる、細かい機能がついてくれるので、だいじです。
わざわざlua-5.1.5をビルドして/usr/lua5.1に入れてみます。このような/usr以下を無駄に増やすのはsolarisの常套手段です。
そのとき、luaのソースはあまりに単純な作りなので、pkg-configの対応とDLLが出来ません。
ソースコードのlua.pcに手を加え、/usr/lua5.1/lib/pkgconfigにいれます。PKG_CONFIG_PATHにそれを加えます。
DLLは静的ライブラリから作るとまったく使えないものが出来ます。ldに-zをつけるとうまくできるんだっけ?
さらにうまくいくにはDLLなのにlua.oも部品に加え、main関数も登録します。

ソースコードにパッチを当てます。ちょっとpatchコマンドで使える形になってないかも。

orig/vlc-2.1.5/compat のみに存在: dummy.c
vlc-2.1.5/ のみに存在: config.log
diff -r vlc-2.1.5/modules/access/directory.c vlc-2.1.5/modules/access/directory.c
327c327
< O_RDONLY );
---
> O_RDONLY | O_DIRECTORY);
orig/vlc-2.1.5/modules/demux のみに存在: dummy.cpp
orig/vlc-2.1.5/modules/stream_out のみに存在: dummy.cpp
diff -r vlc-2.1.5/src/posix/filesystem.c orig/vlc-2.1.5/src/posix/filesystem.c
158,159c158,159
< if (len == -1 || len < _POSIX_NAME_MAX)
< len = _POSIX_NAME_MAX;
---
> if (len == -1 || len < NAME_MAX)
> len = NAME_MAX;



20150213修正 VLCのコンパイルの最初は
 #!/bin/bash
export PKG_CONFIG_PATH=/usr/lua5.1/lib/pkgconfig:$PKG_CONFIG_PATH
export CFLAGS="-g -O2 -Wall -DLUA_COMPAT_ALL -fvisibility=hidden -mtune=native -ffast-math -funroll-loops -fomit-frame-pointer "
export CXXFLAGS=${CFLAGS}
export SDL_CFLAGS='-D_GNU_SOURCE=1 -I/usr/include/SDL'
export SDL_LIBS='-lSDL -lpthread -lposix4'
export LUA_CFLAGS=-I/usr/lua5.1/include
export LUAC=/usr/lua5.1/bin/luac
bash configure --with-pic


さらにインストールした後も/usr/local/share/applications/vlc.desktopを

Exec=/bin/env LD_PRELOAD=/usr/lua5.1/lib/liblua.so.5.1 /usr/local/bin/vlc --started-from-file %U


このようにするとようやくluaのモジュールがつかえるようになる!
YoutubeはVLCでは見れないことがわかった。gnutlsのバージョンが低すぎるのです。すみません。

VLC:まだまだ動画がカクカク


たぶんnVIDIAの場合余計な設定はいらないでしょう。
intelのオンボードグラフィック、変なことがわかった。
まずCPUに余力がある人は設定のビデオ≫「自動」を「X11ビデオ出力」にしてください。
それと詳細設定のオーディオの「オーディオ非同期調整」の値を-300にするとHD動画がなめらかに再生できる。
でも音声がずれる。 -210ならカクカクもしないし音声もずれない。
ということは、Solaris系のOpen sound Systemが0.2秒音声データをキャッシュして再生が遅れる、ということなのでしょうか?

実はffmpegもコンパイルできる

bash configure --enable-pic --enable-gpl --enable-version3 --enable-shared --extra-cflags='-mtune=native' --extra-cxxflags='-mtune=native'


最初はこんな感じでなんなくffmpeg-2.4.3をコンパイルできた。VLCでつかうにはパッチがいるが、
diff --git a/configure.ac b/configure.ac
index a684338..053713a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2242,8 +2242,8 @@ AC_ARG_ENABLE(avcodec,
[ --enable-avcodec libavcodec codec (default enabled)])
AS_IF([test "${enable_avcodec}" != "no"], [
PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 53.34.0 libavutil >= 51.22.0], [
- PKG_CHECK_EXISTS([libavcodec < 56],, [
- AC_MSG_ERROR([libavcodec versions 56 and later are not supported yet.])
+ PKG_CHECK_EXISTS([libavcodec < 57],, [
+ AC_MSG_ERROR([libavcodec versions 57 and later are not supported yet.])
])
VLC_SAVE_FLAGS
CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"

こんなパッチが出回っています。あろうことかちょっと認識を書き換えてautoreconfすればいい。
2014/10/11

Solarisはなんで人気がなくなった

Solarisは90年代はネットの向こう側(いわゆるサーバー)ではLinuxが貧者のSolarisといわれるぐらいの地位がありました。
しかし、なんで人気がなくなったのか?
私は無謀にもSolarisの放り出された娘であるOpenindianaを雰囲気だけで入れて使ったら解ってきたものがあります。
(ほら、娘と表現しているでょ)

難解

Linuxのman pageは基本的な知識さえあればよめるものが多いのですが、
Solarisのは理由分からない言葉が多く、一つ読んでも分からず何から何まで読むことになる。
機能拡張が立派でサブシステムやフレームワークを用意し、カッコイイ名前を付けますが、
膨大な知識が必要です。
例えば他のほとんどのOSで「スレッド」と言われるものが「LWP」「light weight process」「軽量プロセス」という表現のし方をします。

複雑

LinuxがUNIXを見習って作っているのに対し、SolarisはUNIXらしくないところがあります。
UNIXを改造して進化したつもりが、何か変だ。
おそらくお客さんにクレームをつけられないように、お客さんのミスを当てつけされないようにしてあるのですが、これはハックがつまらないことをいみする。
シンプルであるべきところがシンプルになっていないのです。
Linuxであれば自由に中を冒険し、設定ファイルを見て、ディレクトリ構造を見て勉強できますが、
Solarisは難解にできています。
多くの設定ファイルがコマンド経由で変更するようになっています。
Linuxはハック前提で興味本位で調べて興味本位で改造できます。
Solarisは正しい手順がややこしいのです。授業をしないと分かりません。
さらにいうとIPSというリポジトリシステムは一般的なFTPサーバーによるミラーができない、専用のサービスが必要なのでミラーサーバーや非公式リポジトリ(UbuntuにおけるPPAなど)がほとんどない状態です。

進歩がとろい

これはシステムの中核の部分ではありません。ZFSなんて最先端の一つでしょう。
まわりのオープンソースコンポーネントがいくら何でも時代遅れ。
そこを新しくしないと絶対に新しくならないものがある。
ええ。いつでも正確に動いてくれるのは構わないのですよ。しかし、redhatの方が新しいのが用意してある。便利。
またIntelの無線LANでそろそろ5GHzに対応してもらわないとWifiスポットが多い今に付いてゆけるか。
Openindianaの開発チームはバグ報告を無視するので
たとえば実質正式リリース(pre-release、151a9)の方で重大な脆弱性を直さない。
Heartbleed,Shellshock,ucodeadmの最新マイクロコード非対応、細かいバグもCloseになっていない。
たとえばシャットダウン時にHDDが思い切りスカンと鳴ったりする。強制終了かよ。

大 発 見

Openindianaの「契約数」のパラメーターを
2コア4スレッドのCPUで(intel Core-i3 350M)
最初10kで多すぎ、2でも4でも少なすぎ、12にした所パフォーマンスが明らかに改善した。
まさか?売っているSolarisはどうなっているの?
サーバー管理者はカーネルパラメータの調整が日常のようですが、デスクトップで使っていても調整が必要だということがわかってきた。
とくに飛び抜けて膨大な処理を行う、グラフィックです。
LinuxではCFQスケジューラーが自動で調整するのでデスクトップなら調整がいりません。
CFQはデスクトップで無調整で動き、サーバーまで対応、SSDも平気で扱えるように進化しているというから、とんでもないテクノロジーの一つです。
USBメモリーをすぐにアンマウントしようとするとその前からすぐに書き込み、すぐに抜かず用がある時は待ちます。CFQは私の心を読みます。

微妙に違う

特にC言語のAPI、扱いがわずかにちがう。この違いで儲けていたのでしょうが、UNIXの世界が完全オープンソースとなった今では、
FreeBSDがなんとLinuxのバイナリーを動かせるなど、徹底的な追従で生き残る。
タダで手に入るはずのプログラムのコンパイルでいちいち引っかかるというのは苦痛です。
またハッカーは普通のパソコンにUNIXをいれて日常で使いたがるが、そこで融通が効かないこともあります。

融通が微妙に効かない

上にあげた4つの欠陥により、他のシステムやオープン系と微妙に融通がきかない。
それは融通がきく方を選びますね。それは世界中のIT企業というよりユーザー自身が開発するGNU/Linuxが勝ちますよね。
バグが絶対なければ古くてもいいって、あのねそういうポリシーばっかりだとそれはもともとIBMのやることだから、メインフレームをかってしまわれる。
Solaris zoneよりLinuxのKVMを使われてしまう。ZFSよりbtrfsを使われてしまう。Solarisしかできないことはなくなってゆきます。

なぜか使い方が違う

ArchLinuxをデスクトップで使ってみるとなぜか面白い情報をいっぱい手に入れることができる。著作権セーフの動画をダウンロードできた。
Openindianaを使ってみると最初はいい雰囲気をしているがしだいに汚れ、やりたくないパフォーマンス最適化や社会への文句ばかりを検索する。
心に与える影響はもはや太陽ではない。
*この記事はエンタープライズに関わっていない素人の推測です。