PostGISインストール

2014/11/08
地図情報を外部へ提供し、JavaScriptやQGIS等と連携させるために、PostgreSQLでジオメトリ情報が扱えるように拡張するPostGISを使用する。

インストールと初期設定
# yum install postgis postgresql-server # postgresql-setup initdb Initializing database ... OK # passwd postgres ユーザー postgres のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。
外部からのサーバへの接続を許可する # firewall-cmd --permanent --add-service=postgresql # firewall-cmd --add-service=postgresql
/var/lib/pgsql/data/pg_hba.conf
: : # IPv4 local connections: host all all 127.0.0.1/32 ident host all all 192.168.1.0/24 md5 : :
# vi /var/lib/pgsql/data/postgresql.conf
: : #listen_addresses = 'localhost' # what IP address(es) to listen on; listen_addresses = '*' # comma-separated list of addresses : :
サービスの起動と動作確認 # systemctl start postgresql # systemctl enable postgresql # su - postgres $ echo "select * from postgis_version();" | psql gis postgis_version --------------------------------------- 2.1 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
DBの作成 $ createdb gis -E UTF-8 $ psql -d gis -c "CREATE EXTENSION postgis;" $ psql -d gis -c "CREATE EXTENSION postgis_topology;" $ psql -d gis -c "ALTER USER postgres PASSWORD '********';"
pgAdmin3をインストールする。
pgAdmin: Download - Windows ™

shapeファイルのコンバータをプラグインとして利用する。PostGISの本体に入っている。

Windows版のzipをダウンロードして、binの下のpostgisguiディレクトリをpgAdmin3のインストールディレクトリにコピーする。
Index of /postgis/windows

C:\Program Files (x86)\pgAdmin III\1.18\plugins.d\plugins.iniに下記を追加する。
; ;PostGIS shp2pgsql-gui (Windows): ; Title=PostGIS Shapefile and DBF loader Command="$$PGBINDIR\postgisgui\shp2pgsql-gui.exe" -h "$$HOSTNAME" -p $$PORT -U "$$USERNAME" -d "$$DATABASE" -W "$$PASSWORD" Description=Open a PostGIS ESRI Shapefile or Plain dbf loader console to the current database. KeyFile=$$PGBINDIR\postgisgui\shp2pgsql-gui.exe Platform=windows ServerType=postgresql Database=Yes SetPassword=Yes
pgAdmin3を起動して、[ファイル]-[オプション]で、PG binパスを確認する。


PostGISに接続する。


 プラグインを起動する。


[Add File]をクリックして、読み込むShapeファイルを選択する。


日本語のファイル名は読み込めないので、下記を参考にリネームしておく。
海岸線 CstLine
街区の代表点 SBAPt
街区線 SBBdry
基準点 GCP
軌道の中心線 RailCL
建築物 BldA
建築物の外周線 BldL
行政区画 AdmArea
行政区画界線 AdmBdry
行政区画代表点 AdmPt
水域 WA
水涯線 WL
水部構造物線 WStrL
水部構造物面 WStrA
町字の代表点 CommPt
町字界線 CommBdry
等高線 Cntr
道路縁 RdEdg
道路構成線 RdCompt
標高点 ElevPt

[Options]をクリックし、エンコーディングをCP932(or SHIFT-JIS)指定する。


[Import]をクリックすると読み込みが始まる。完了するとテーブルができている。


動作確認はQGISでやるとよい。
データの格納と表示 — Let's Postgres
Read more ...

GeoTiffからGeopaparazzi用のタイルを作成する

2014/11/05
住宅地図を既存地図に重ねる」で作成したGeoTiffを、Android用のフィールド調査アプリGeopaparazziで読み込めるように変換する。
OSGeo4W Shellを起動する。

gdal2tiles.bat -z 10-21 D:\Desktop\yogo2_modified.tif D:\Desktop\yogo2 で変換開始。


yogo2フォルダに下記のファイルができる。openlayers.htmlを開くと、ブラウザでマップが確認できる。このyogo2フォルダを、外部メモリモードで接続したAndroidのmapsディレクトリにフォルダごとコピーする。

mapsディレクトリに下記のyogo2.mapurlファイルを作成する。centerの値はtilemapresource.xmlのBoundingBoxの値から中心を計算して設定する。
url=yogo2/ZZZ/XXX/YYY.png minzoom=10 maxzoom=21 center=132.73221620 33.8093724916 type=tms
mapsフォルダの中は下記になっているはず。

Geopaparazziを起動して、右上の設定メニューから「タイルソースの選択」をクリックし、転送したyogo2を選択する。

完成。赤い線はGPSトラッキング。
Read more ...

住宅地図を既存地図に重ねる

2014/11/05
地図の取り込みは、ほとんどの画像フォーマットをサポートしている。PDFもOK。地図の変形と座標合わせにはQGISを使用する。基盤情報地図を参照して合わせるので、対象の地区の地図をロードしておく。
QGISを起動して、メニューの[プラグイン]-[プラグインの管理とインストール]から「GDALジオリファレンサー」プラグインをインストールする。

メニューの[ラスタ]-[Georeferencer]-[Georeferencer]から起動する。

メニューの[ファイル]-[ラスタを開く]からファイルを開く。今回は住宅地図をスキャンした画像を使用したが、航空写真などでもよい。この時、空間参照システムを選択する必要がある。リファレンスに使用する「基盤地図情報」は、「JGD2000/Japan Plane Rectangular CS IV(EPSG:2446)」(中国・四国地区)なので、同じ座標系を設定する。
ちなみに、今回使用したスキャン画像は13000X11000ピクセルのPNGフォーマット。この時点でファイルサイズは4MBある。リファレンス後に出力されるGeoTiffファイルは500MB程度になるので、HDDに十分な空きのある環境で行うこと。

住宅地図を基本地図に投影するためのリファレンスになる点をプロットしていく。ジオリファレンサーの住宅地図側のマップをクリックすると地図座標入力のダイアログが開くので、「マップキャンバスより」をクリックして、基本地図側の対応する場所を指定する。

OKで決定する。リファレンスは多いほうがよい。四隅と中央あたりの最低でも6点は欲しい。

入力が完了したら、[ファイル]-[ジオリファレンシングの開始]から変換を開始する。変換タイプは下記で指定してみた。

変換が終わったら読み込んでみる。シェイプファイルと同じように、変換後のGeoTiffファイルをレイヤーにドラッグアンドドロップする。レイヤーは一番下がよいでしょう。

完成。
Read more ...

QGISで基盤地図情報を使う

2014/11/04
国土地理院のサイトから地形データを取ってくる(アカウントが必要)。
基盤地図情報ダウンロードサービス

データフォーマットをQGISで読める形式に変換する必要があるので、下記をダウンロードしておく。
基盤地図情報ビューア

今回使用する地図情報は「基盤地図情報基本項目-JPGIS(GML)形式」。


2次メッシュごとに細かく分割されていて、地図から選択すると割とめんどくさいので、リストから対象市区町村を選択して一気にダウンロードするとよい。


ダウンロードしたファイルを展開すると下記のようなファイルが入っている。フォーマットの変換はzipファイルのままで行うので展開しなくてよい。

松山市街のメッシュコードは下記。他の地区のメッシュコードは「地図上で標準地域メッシュを確認するページ」で確認できる。

ダウンロードしておいた「基盤地図情報ビューア」をインストールして起動する。変換したい地区のファイルをドラッグアンドドロップする。メニューの[エクスポート]-[エクスポート]を選択。変換種別は「シェープファイル」。取りあえず全部変換する。出力先フォルダの指定も忘れずに。


QGISを起動して、出力先フォルダを開き、変換したシェープファイル(拡張子.shp)を全て選択する(CTRLかSHIFTを押しながら)。

選択したファイルを、真下のレイヤウインドウにドラッグアンドドロップすると地図が表示される。



必要ないレイヤーを非表示にしたり、色を変えたり、町名や街区を表示したりして、満足できる地図ができたら、[プロジェクト]-[名前を付けて保存]から設定をセーブする。
Read more ...

Baikal and CalDavZAPでスケジュール管理

2014/10/25
久しぶりにCalDavZapのサイトをのぞいたら、いつの間にか日本語化されてた。作ってくれた人ありがとー。
ということでインスコしていきます。CalDAVサーバはいろいろありますが、GUIのきれーなBaïkalをチョイス。
最近開発止まってるけど大丈夫なのか!?

CalDAV + CardDAV lightweight server: Baïkal
Baikal/INSTALL.md
# wget http://baikal-server.com/get/baikal-regular-0.2.7.tgz # tar zxf baikal-regular-0.2.7.tgz # mv baikal-regular /usr/share/. # yum install php-sabredav-Sabre_CalDAV php-sabredav-Sabre_CardDAV
SELinuxの設定
# yum install policycoreutils-python # chown -R apache:apache /usr/share/baikal-regular # semanage fcontext -a -t httpd_sys_content_t "/usr/share/baikal(.*/)?(.*)?" # semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/baikal(.*/)?Specific(/.*)?" # restorecon -RFv /usr/share/baikal-regular # touch /usr/share/baikal-regular/Specific/ENABLE_INSTALL
SQLiteでいいという人は以下のmariaDBのインストールはいらない。
# yum install mariadb-server # vi /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mysqld/mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd character-set-server=utf8 : : # systemctl start mariadb # systemctl enable mariadb ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service' # mysql_secure_installation # mysql -u root -p MariaDB [(none)]> CREATE DATABASE baikal; MariaDB [(none)]> GRANT ALL ON baikal.* TO 'baikal'@'localhost' IDENTIFIED BY '********'; MariaDB [(none)]> exit; # mysql -u root -p -D baikal < /usr/share/baikal-regular/Core/Resources/Db/MySQL/db.sql
PDO(PHP Data Object)
# yum install php-pdo php-mysqlnd # vi /etc/php.ini : : ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. ; http://php.net/pdo_mysql.default-socket pdo_mysql.default_socket=/var/lib/mysql/mysql.sock : :
firewallに穴を開ける。認証があるのでsslを使う必要があるが、設定がうまくいかなかったので平文で勘弁して下さい。
# firewall-cmd --add-service=http # firewall-cmd --permanent --add-service=http
次にWebベースのCalDAVクラアントCalDavZapをインスコ。
自分はThunderbirdなのでWebベースのCalDAVクラアントなんて使わなくていいのですが、世の中(会社)にはWindows Live メールとかCalDAV使えない糞メーラを使い続ける人がいるのでなんとかしないといけません。
CalDavZAP - the open source CalDAV web client
# wget http://www.inf-it.com/CalDavZAP_0.11.1.zip # unzip CalDavZAP_0.11.1.zip # mv caldavzap /usr/share/. # chown -R apache:apache /usr/share/caldavzap # semanage fcontext -a -t httpd_sys_content_t "/usr/share/caldavzap(/.*)?" # restorecon -RFv /usr/share/caldavzap
BaïkalとCalDavZAPで別々にVirtualHost作りたかったけど、cross-domainの設定がどうにもこうにも動かないのでギブアップ。
# vi /etc/httpd/conf.d/baikal.conf # # Baikal and CalDavZAP # <virtualhost *:80> DocumentRoot /usr/share/baikal-regular/html ServerName caldav.sample.jp

RewriteEngine On RewriteCond %{HTTP:Access-Control-Request-Method} !^$ RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=200,L] RewriteRule /.well-known/carddav /card.php [R,L] RewriteRule /.well-known/caldav /cal.php [R,L] <directory "/usr/share/baikal-regular/html"> <ifmodule mod_authz_core.c> # Apache 2.4 Require local Require ip 192.168.1 </IfModule> <ifmodule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from 192.168.1 </IfModule> </Directory>

Alias /zap /usr/share/caldavzap <directory "/usr/share/caldavzap"> <ifmodule mod_authz_core.c> # Apache 2.4 Require local Require ip 192.168.1 </IfModule> <ifmodule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from 192.168.1 </IfModule> Options None Options +FollowSymlinks AllowOverride All </Directory> </VirtualHost> # vi /usr/share/caldavzap/config.js : : var globalNetworkCheckSettings={href: 'http://caldav.sample.jp/cal.php/calendars/', hrefLabel: null, additionalResources: [], forceReadOnly: null, settingsAccount: true, timeOut: 30000, lockTimeOut: 10000, delegation: true, backgroundCalendars: [], ignoreAlarms: false} : : var globalUseJqueryAuth=true; : : var globalInterfaceLanguage='ja_JP'; : :

apacheを起動
# systemctl start httpd # systemctl enable httpd ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
http://caldav.sample.jp/にアクセスするとインスコが始まる。

なんかエラーが出てるけど見なかったことに。

インスコ完了後にログインした管理画面。

カレンダーには、http://caldav.sample.jp/zap/でアクセスする。
Read more ...

epgrecUNA on Fedora 20

2014/05/07
epgrecUNAをFedoraで動かす上で困るのは、カーネルのアップデート毎にpt1_drvをビルドする必要があるのと、SELinuxが有効の環境ではepgrecUNAが動かない。そこでモジュールを自動でビルドするためにDKMSを使用する。また、クリーンインストールする機会があったので、epgrecUNA用のポリシーも作ってみた。

DKMS

pt1_drvのソースを配置する。Makefileとかいじったような気もするけど、前の環境からコピってきてるので、どこをいじったかよくわからない。他の情報も参考にしつつ、ビルドできるようにいい感じに修正して下さいすみません。
# tree -A /usr/src/pt1_drv-1.1.0 /usr/src/pt1_drv-1.1.0 ├── dkms.conf └── src ├── Makefile ├── etc │ └── 99-pt1.rules ├── modules.order ├── pt1_com.h ├── pt1_i2c.c ├── pt1_i2c.h ├── pt1_ioctl.h ├── pt1_pci.c ├── pt1_pci.h ├── pt1_tuner.c ├── pt1_tuner.h ├── pt1_tuner_data.c └── pt1_tuner_data.h # ln /usr/src/pt1_drv-1.1.0/src/etc/99-pt1.rules /etc/udev/rules.d/99-pt1.rules
pt1_drvは、もともとあるearth-pt1とかぶっているので、earth-pt1を無効にしないと読み込まれない
# echo "blacklist earth-pt1" >> /etc/modprobe.d/blacklist.conf
DKMSパッケージをインスコ
# yum install dkms
dkms.confを書く
# cat /usr/src/pt1_drv-1.1.0/dkms.conf #パッケージの名前 PACKAGE_NAME="pt1_drv" #パッケージのバージョン PACKAGE_VERSION="1.1.0" #ビルドするコマンド MAKE="cd src/ && BUILD_KERNEL=${kernelver} make" #中間ファイルの削除コマンド CLEAN="cd src/ && make clean" #作成されるモジュールの名前(拡張子.koは付けない) BUILT_MODULE_NAME="pt1_drv" #モジュールが作成される場所(ソースディレクトリからの相対パス) BUILT_MODULE_LOCATION="src/" #元々のインストール先(/lib/modules/`uname -r`をルートとしたパス) DEST_MODULE_LOCATION="/kernel/drivers/video/" REMAKE_INITRD="yes" #自動更新の有効化 AUTOINSTALL="yes"
add! build! install!
# dkms add -m pt1_drv -v 1.1.0 Creating symlink /var/lib/dkms/pt1_drv/1.1.0/source -> /usr/src/pt1_drv-1.1.0 DKMS: add completed.
# dkms build -m pt1_drv -v 1.1.0 Kernel preparation unnecessary for this kernel. Skipping... Building module: cleaning build area... cd src/ && BUILD_KERNEL=3.14.2-200.fc20.x86_64 make... cleaning build area... DKMS: build completed.
# dkms install -m pt1_drv -v 1.1.0 pt1_drv: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/3.14.2-200.fc20.x86_64/extra/ Adding any weak-modules depmod... Backing up initramfs-3.14.2-200.fc20.x86_64.img to /boot/initramfs-3.14.2-200.fc20.x86_64.img.old-dkms Making new initramfs-3.14.2-200.fc20.x86_64.img (If next boot fails, revert to initramfs-3.14.2-200.fc20.x86_64.img.old-dkms image) dracut........ DKMS: install completed.
yumでカーネルのアップデートがあった場合には、勝手にビルドしてくれるサービスを起動。いらないかも?
# systemctl start dkms # systemctl status dkms dkms.service - Builds and install new kernel modules through DKMS Loaded: loaded (/usr/lib/systemd/system/dkms.service; enabled) Active: active (exited) since 月 2014-05-12 23:22:07 JST; 5s ago Docs: man:dkms(8) Process: 20572 ExecStart=/bin/sh -c dkms autoinstall --verbose --kernelver $(uname -r) (code=exited, status=0/SUCCESS) Main PID: 20572 (code=exited, status=0/SUCCESS) # systemctl enable dkms ln -s '/usr/lib/systemd/system/dkms.service' '/etc/systemd/system/multi-user.target.wants/dkms.service'

ポリシー

何か足りないかもしれないけど、一応これでひと通り動いてる
# cat epgrecUNA.te module epgrecUNA 1.0; require { type httpd_t; type httpd_sys_script_t; type unconfined_t; type shadow_t; type device_t; type crond_t; type crond_var_run_t; type user_cron_spool_t; type user_tmpfs_t; class process signal; class msgq { unix_read destroy create }; class file { read write create setattr getattr open unlink }; class dir { write search read add_name remove_name open getattr }; class sem { unix_read read write unix_write associate }; class shm { unix_read read write unix_write associate getattr }; class chr_file { read ioctl open }; } allow httpd_t shadow_t:file { read getattr open }; allow httpd_t user_cron_spool_t:dir { write search read add_name remove_name open getattr }; allow httpd_t user_cron_spool_t:file { open create setattr unlink }; allow httpd_t crond_t:process signal; allow httpd_t crond_var_run_t:file { read open }; allow httpd_t unconfined_t:sem { unix_read read unix_write write associate }; allow httpd_t unconfined_t:shm { unix_read read unix_write write associate getattr }; allow httpd_sys_script_t device_t:chr_file { read ioctl open }; allow httpd_sys_script_t self:msgq { unix_read destroy create }; allow httpd_t user_tmpfs_t:file { read write };
ポリシーのコンパイルとインストールは、下記を使わせてもらいましょう
SELinux - Take's Wiki
# ./installSELPolicy epgrecUNA # setsebool -P httpd_mod_auth_pam 1 # semanage fcontext -a -t httpd_sys_content_t "/usr/share/epgrecUNA(/.*)?" # restorecon -RF /usr/share/epgrecUNA
動かない時は、以下で足りないポリシーを探して追加する
# setenforce 0 (動かなかった動作をもう一度。それでも動かない場合は、SELinux以外の原因と思われ) # setenforce 1 # sealert -l* # grep httpd /var/log/audit/audit.log | audit2allow -M mypol # cat mypol.te
あとffmpegは、rpmfusionリポジトリを追加しないと入らない
# rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm # yum install ffmpeg
Read more ...

DJI Phantom 2 散財記録

2014/02/18
DJI | Phantom 2
DJI japan | Facebook


本体

抜群の安定性。GPSにより空中での静止、コントール不能になった場合に、離陸地点に自動で帰還する機能があり、ラジコンヘリの経験が無くても気軽に飛ばせる。


カメラ

空撮をする場合、カメラが機体の影響を受けないように、ジャイロでカメラの姿勢を制御するジンバルが必要。振動や傾きのないきれいな動画が撮影できる。


アクセサリ

初心者はぜひプロペラガードの装着を。


プロポの電池の減りは意外と早い。


FPV(First Person View)

空撮する場合、機体が遠くにあるとカメラの向いている方向が目視できないので、何が撮れているかさっぱりわからない。そうなると空撮している画像をリアルタイムで見たくなってくる。監視カメラ用として1万円以下で売られている映像トランスミッタは、ほぼ違法(技適マーク無し)。摘発されることはほぼないと思われるが、気持ち悪いので合法の機器を使用する。本体バッテリーは12Vだが、送信機は5Vなので、DC-DC降圧モジュールを使用して電圧を調整する必要がある(昇圧モジュールと間違わない!)。送信機用と受信機用で2つ必要。



Read more ...

Performance Counters

2014/02/04
以下のOracleのエンジニアブログの翻訳
T4 Performance Counters explained

T4が発表されて数ヶ月が経ちましたが、何人かの人々は、監視可能な新しいパイプラインの細部を疑問に思っているかもしれません。 "cpustat -h"では、監視可能な多くのイベントのリストが出力されますが、見ればすぐ分かるものはごく少数です。私はそれらにいくつかの見識を提供しよう思います。これらの"PIC event"のいくつかは、T4のパイプラインの深い知識が必要となります。そのうち説明するつもりですが、当分の間は無視しておきます。
Notes:
  • some counters changed from tape-out 1.1 (*only* used in the T4 beta program) to tape-out 1.2 (used in the systems shipping today) The table only lists the tape-out 1.2 counters.
  • I marked some counters "no good use known". That means there is no sensible application area (yet?) known. Some counters become useless while the overall design is being developed.
  • check back often, I will every once in while edit this page. The use cases for these counters may change over time while we learn.
pic name (cpustat) Generic Event(PAPI) Prose Comment
Sel_pipe_drain_cycles,
Sel_0_[wait|ready],
Sel_[1|2]
Sel_0_wait は、ストランドが選択されるのを待つサイクルをカウントします。いくつかの理由を、詳細にカウントすることができ、以下のとおりです。
  • Sel_0_ready: ストランドの準備はできていましたが、選択されなかったサイクルで、パイプラインが募集枠を超える応募であったことを示しています
  • Sel_pipe_drain_cycles: スレッドが、分岐予測ミスの後に、予測ミスを解決するために命令パスが修正されるのを待っているサイクル
  • Sel_1,2 どのくらいの頻度でひとつのストランドが、1つまたは2つの μOP を選択したかのカウント
Pick_any, Pick_[0|1|2|3] 1, 2, 3, 0 または、少なくとも一つの命令または μOP が、pick されているサイクル
Instr_FGU_crypto, Instr_ld,
Instr_st, SPR_ring_ops, Instr_other
PAPI_fp_ins, PAPI_ld_ins,
PAPI_sr_ins
ストランドで実行命されたタイプ別の命令数
Instr_all PAPI_tot_ins ストランドで実行された命令の総数
Sw_count_intr vcpu 上の S/W 命令数(sethi %hi(fc000),%g0 (それが何であれ)) 
Atomics アトミック操作(LDSTUB[load and store unsigned byte], CASA/CASXA, SWAP) の数
SW_prefetch PREFETCH または PREFETCHA 命令の数
Block_ld_st vcpu 上の Block load または store
IC_miss,
IC_miss_L2_L3_hit,
IC_miss_local_remote_remL3_hit
PAPI_l1_icm L2-cache または L3-cache のどちらかでのミスで廃棄された、I-cache プリフェッチ。このバリアントは、原因の命令をコミットするかどうかに関係なく、ミスをカウントします。
IC_miss_nospec,
IC_miss_[L2_L3|local|remote]_hit_nospec
どこで発生したかで区別した様々な I-cache(Instruction Cache: 命令キャッシュ)ミス。スレッドごとの全てのカウントで、唯一の主要なイベント: T4 は、コア上の特定の命令の最初に出現した I-cache ミスだけをカウントします。あるストランドが I-cache でミスする場合、このミスはカウントされますが、一つ目のミスを解決している間に、同じコア上の二つ目のストランドがミスすると、このキャッシュミスはカウントされません。この I-cache ミスの特色は、実際のコミット命令で起こされるミスだけをカウントします("_nospec" に注目)。
DC_miss
DC_miss_[L2_L3|local|remote_L3]_hit
PAPI_l1_dcm 全体的または、どこでヒットしたかの詳細な D-cache ミス。_nospec の説明は、IC_miss を参照。
DC_miss_nospec, DC_miss_[L2_L3|local|remote_L3]\
_hit_nospec
全体的または、どこでヒットしたかの詳細な D-cache ミス。_nospec の説明は、IC_miss を参照。
BTC_miss PAPI_btac_m ブランチ・ターゲット・キャッシュのミス。BTB(Branch Target Buffer) とも呼びます。
ITLB_miss PAPI_tlb_im ITLB(Instruction Translation Lookaside Buffer) ミス (同期してカウントされます)
ITLB_miss_asynch 同上(非同期)
[I|D]TLB_fill_[8KB|64KB|4MB|256MB|2GB|trap] 対応するページサイズの変換により、ITLB または DTLB を埋める Hardware Tablewalk (HWTW) イベント。
HWTW が、対応する TLB を埋めることができなかった場合、"_trap" イベントが発生します。
IC_mtag_miss,
IC_mtag_miss_\
[ptag_hit|ptag_miss|\
ptag_hit_way_mismatch]
I-cache マイクロタグミス。掘り下げるためのいくつかのオプションがあります。
Fetch_0, Fetch_0_all Fetch_0 は、特定のストランドのために、何もフェッチされなかったサイクル数をカウントし、Fetch_0_all は、コア上のすべてのストランドに対して、何もフェッチされなかったサイクル数をカウントします。
Instr_buffer_full フェッチが妨げられていることにより、ストランド用の命令バッファがいっぱいになったサイクル。
BTC_targ_incorrect BTC からの誤った予測分岐ターゲットの発生をカウントします。
[PQ|ROB|LB|ROB_LB|SB|\
ROB_SB|LB_SB|RB_LB_SB|\
DTLB_miss]\
_tag_wait
これらのカウンタは、パイプラインの動作を監視します。したがって、ストランド固有ではありません:
  • PQ: リネーム·ステージで、ピックキュータグ(シングルスレッドモード用のメモリバインドワークロードを知らせるかもしれない)を待つサイクル
  • ROB: セレクト・ステージで、ROB(ReOrderBuffer)タグを待つサイクル
  • LB: セレクト・ステージで、Load Buffer タグを待つサイクル
  • SB: セレクト・ステージで、Store Buffer タグを待つサイクル
  • 上記の組み合わせは許可され、イベントの一部が重複することができる。これらのいずれかが発生した場合、カウンタはサイクルごとに一度にインクリメントされる
  • DTLB: ピック・ステージでロードまたはストア命令が DTLB ミスタグを待つサイクル
[I|D]TLB_HWTW_\
[L2_hit|L3_hit|L3_miss|all]
DTLB または ITLB ミスのどちらかが原因で発生するHWTWへのアクセスのカウント。どこでヒットしたか、さらに詳細に調査できます。
DTLB_miss_asynch 非同期のすべての DTLB ミスのカウント。同期的にそれらをカウントする方法はありません。
DC_pref_drop_DC_hit, SW_pref_drop_[DC_hit|buffer_full] D-cache ヒットが原因でドロップされた、L1-D-cache H/W プリフェッチ。コアごとにカウント。もう一方は、ストランド当たりの S/W プリフェッチのカウント。
[Full|Partial]_RAW_hit_st_[buf|q] まだ格納されていないデータを取得したい load イベントをカウントします。例) パイプラインの内に残っている。データはまだストアバッファまたはストアキューのいずれかの中である可能性があります。データの load が、ストアバッファとストアキューに一致する場合、もちろん若いので、バッファー内のデータが優先されます。
[IC|DC]_evict_invalid,
[IC|DC|L1]_snoop_invalid,
[IC|DC|L1]_invalid_all
キャッシュ内に必要なデータを保存し、不要なデータを追い出すことを、キャッシュエビクションと呼びます。
無効になったキャッシュエビクションのコアごとのカウンターです。
St_q_tag_wait パイプラインがストアキュータグを待っているサイクル数。もちろんコアごとのカウント
Data_pref_[drop_L2|drop_L3|\
hit_L2|hit_L3|\
hit_local|hit_remote]
なぜドロップされたか、どこでヒットしたかの、さらに詳細なデータプリフェッチ
St_hit_[L2|L3],
St_L2_[local|remote]_C2C,
St_local, St_remote
どこでヒットしたか、またはどこで L2-cache 間転送を引き起こしたかを区別されたストアイベント。例えば、同じダイ上の別 L2-cache から、あるいは異なるダイからの転送のどちらか。
L2_[clean|dirty]_evict コアごとの dirty または clean な L2-cache エビクション。 L2_clean_evict は、命令フェッチのボトルネックを示すことができます: それらは変化しないため、命令は clean と考えることができます。
clean なエビクションの発生が多い場合は、十分に速くフェッチされていない L2-cache から、命令をエビクションしている可能性があります。
L2_fill_buf_full,
L2_wb_buf_full,
L2_miss_buf_full
コアあたりの L2-cache バッファイベント。これらのサイクル数は、提供される知られているよい使用がない。
L2_pipe_stall コアあたりの、L2-cache が原因でパイプラインがストールしているサイクル。知られているよい使用がない。
Branches PAPI_br_cn ブランチのカウント(Tcc, DONE, RETRY, SIT はブランチとしてカウントされない)
Br_taken PAPI_br_ins ブランチされたカウント(Tcc, DONE, RETRY, SIT はブランチとしてカウントされない)
Br_mispred,
Br_dir_mispred,
Br_trg_mispred,
Br_trg_mispred_\
[far_tbl|indir_tbl|ret_stk]
PAPI_br_msp さまざまな分岐予測ミスイベントのカウンタ
Cycles_user アドレス空間を制御する hpriv, nouser, sys 属性設定のサイクルカウント
Commit_[0|1|2],
Commit_0_all,
Commit_1_or_2
ストランドでコミットした、0, 1, または 2 回の µOP の数。Commit_0_all は、コア全体での µOP されていないコミットのカウント。
Read more ...

ipadmプロパティ

2014/01/29
ipadm show-prop による一覧に出ないプロパティについて、ソースコードなどから可能な限り拾ってみる。
(*) は、相当するnddパラメータや他の関連パラメータへのリンク。

IP
PROTO PROPERTY DEFAULT POSSIBLE
ip _addrs_per_if 256 1~8192
ip _arp_icmp_error 0 0,1
ip _arp_defend_interval 300000 0~3600000
ip _arp_defend_period 3600 5~86400
ip _arp_defend_rate 100 0~20000
ip _arp_fastprobe_count 3 0~20
ip _arp_fastprobe_delay 100 0~20000
ip _arp_fastprobe_interval 150 10~20000
ip _arp_probe_count 3 0~20
ip _arp_probe_delay 1000 0~20000
ip _arp_probe_interval 1500 10~20000
ip _arp_publish_count 5 1~20
ip _arp_publish_interval 2000 1000~20000
ip _broadcast_ttl 1 1~254
ip _cgtp_filter 0 0,1
ip _dce_reclaim_fraction 3 1~8
ip _debug 0 0~20
ip _defend_interval 30 0~999999
ip _dup_recovery 300000 0~3600000
ip _ecmp_behavior 2 0~2
ip _forward_directed_broadcasts 0 0,1
ip _ipsec_override_persocket_policy 0 0,1
ip _ipsec_policy_log_interval 1000 0~999999
ip _icmp_accept_clear_messages 1 0,1
ip _icmp_err_burst 10 1~99999
ip _icmp_err_interval 100 0~99999
ip _igmp_accept_clear_messages 1 0,1
ip _igmp_max_version 2 0~2
ip _ire_badcnt_lifetime 60 0~3600
ip _ire_reclaim_fraction 3 1~8
ip _lso_outbound 1 0,1
ip _max_defend 3 0~1000
ip _max_temp_defend 1 0~1000
ip _max_temp_idle 86400 0~999999
ip _mld_max_version 2 1~2
ip _mrtdebug 0 0~10
ip _multirt_ttl 1 0~255
ip _nce_reclaim_fraction 3 1~8
ip _ndp_defend_interval 300000 0~3600000
ip _ndp_defend_period 3600 5~86400
ip _ndp_defend_rate 100 0~20000
ip _ndp_delay_first_probe_time 5000 2~999999999
ip _ndp_max_unicast_solicit 3 1~999999999
ip _ndp_unsolicit_count 3 1~20
ip _ndp_unsolicit_interval 2000 1000~20000
ip _path_mtu_discovery 1 0,1
ip _pathmtu_interval 1200 2~999999999
ip _pim_accept_clear_messages 1 0,1
ip _pmtu_min 576 68~65535
ip _policy_mask 0 0~15
ip _reass_queue_bytes 1000000 0~999999999
ip _respond_to_address_mask_broadcast 0 0,1
ip _respond_to_echo_broadcast 1 0,1
ip _respond_to_timestamp 0 0,1
ip _respond_to_timestamp_broadcast 0 0,1
ip _restrict_interzone_loopback 1 0,1
ip _src_check 2 0~2
ip _wroff_extra 32 0~256
ipv4 forwarding off on,off
ipv4 hostmodel weak strong, src-priority, weak
ipv4 ttl 255 1~255
ipv4 _dad_announce_interval 15000 0~3600000
ipv4 _forward_src_routed * 0 0,1
ipv4 _icmp_return_data_bytes 64 8~65536
ipv4 _icmp_return_pmtu 1 0,1
ipv4 _ignore_redirect 0 0,1
ipv4 _reasm_timeout 15 5~255
ipv4 _respond_to_echo_multicast 1 0,1
ipv4 _send_redirects 1 0,1
ipv4 _strict_dst_multihoming * 0 0~1
ipv4 _strict_src_multihoming 0 0~2
ipv6 forwarding off on,off
ipv6 hoplimit 255 1~255
ipv6 hostmodel weak strong, src-priority, weak
ipv6 _dad_announce_interval 15000 0~3600000
ipv6 _forward_src_routed * 0 0,1
ipv6 _icmp_return_data_bytes 1280 8~1280
ipv6 _icmp_return_pmtu 1 0,1
ipv6 _ignore_home_address_opt 1 0,1
ipv6 _ignore_redirect 0 0,1
ipv6 _reasm_timeout 60 5~255
ipv6 _respond_to_echo_multicast 1 0,1
ipv6 _send_redirects 1 0,1
ipv6 _strict_dst_multihoming * 0 0~1
ipv6 _strict_src_multihoming 0 0~2



TCP
PROTO PROPERTY DEFAULT POSSIBLE
tcp cong_default newreno newreno,cubic,
highspeed,vegas
tcp cong_enabled newreno
newreno,cubic,
highspeed,vegas
tcp ecn passive never,passive, active
tcp extra_priv_ports 2049,4045 1~65535
tcp largest_anon_port 65535 32768~65535
tcp max_buf 1048576 128000~1073741824
tcp recv_buf 128000  2048~1048576
tcp sack active never,passive, active
tcp send_buf 49152 4096~1048576
tcp smallest_anon_port 32768 1024~65535
tcp smallest_nonpriv_port 1024 1024~32768
tcp _conn_grace_period 0 0~20000
tcp _conn_req_max_q 128 1~4294967295
tcp _conn_req_max_q0 1024 0~4294967295
tcp _conn_req_min 1 1~1024
tcp _cwnd_max 1048576 128~1073741824
tcp _debug 0 0~10
tcp _deferred_ack_interval 100 1~60000
tcp _deferred_acks_max 2 0~16
tcp _dupack_fast_retransmit 3 1~10000
tcp _fin_wait_2_flush_interval 60000 1000~7200000
tcp _ignore_path_mtu 0 0,1
tcp _ip_abort_cinterval 180000 1000~4294967295
tcp _ip_abort_interval 300000 500~4294967295
tcp _ip_abort_linterval 180000 1000~4294967295
tcp _ip_notify_cinterval 10000 1000~4294967295
tcp _ip_notify_interval 10000 500~4294967295
tcp _ipv4_ttl 64 1~255
tcp _ipv6_hoplimit 60 0~255
tcp _keepalive_abort_interval 480000 0~4294967295
tcp _keepalive_interval 7200000 10000~864000000
tcp _local_dack_interval 50 10~500
tcp _local_dacks_max 8 0~16
tcp _maxpsz_multiplier 10 0~100
tcp _mss_def_ipv4 536 1~65495
tcp _mss_def_ipv6 1220 1~65475
tcp _mss_max_ipv4 65495 1~65495
tcp _mss_max_ipv6 65475 1~65475
tcp _mss_min 108 1~65495
tcp _naglim_def 4095 1~65535
tcp _push_timer_interval 50 0~100
tcp _reass_timeout 100000 0~4294967295
tcp _recv_hiwat_minmss 8 1~65536
tcp _rev_src_routes 0 0,1
tcp _rexmit_interval_extra 0 0~7200000
tcp _rexmit_interval_initial 1000 1~20000
tcp _rexmit_interval_max 60000 1~7200000
tcp _rexmit_interval_min 200 1~7200000
tcp _rst_sent_rate 40 0~4294967295
tcp _rst_sent_rate_enabled 1 0,1
tcp _rtt_updates 20 0~65536
tcp _slow_start_after_idle 4 1~16384
tcp _slow_start_initial 4 1~4
tcp _snd_lowat_fraction 0 0~16
tcp _strong_iss 1 0~2
tcp _time_wait_interval 60000 1000~600000
tcp _tstamp_always 0 0,1
tcp _tstamp_if_wscale 1 0,1
tcp _use_smss_as_mss_opt 0 0,1
tcp _wroff_xtra 32 0~256
tcp _wscale_always 1 0,1
tcp _xmit_lowat 4096 4096~1073741824



UDP
PROTO PROPERTY DEFAULT POSSIBLE
udp extra_priv_ports 2049,4045 1~65535
udp largest_anon_port 65535 32768~65535
udp max_buf 2097152 65536~1073741824
udp recv_buf 57344 128~2097152
udp send_buf 57344 1024~2097152
udp smallest_anon_port 32768 1024~65535
udp smallest_nonpriv_port 1024 1024~32768
udp _do_checksum 1 0,1
udp _ipv4_ttl * 255 1~255
udp _ipv6_hoplimit * 60 0~255
udp _pmtu_discovery 0 0,1
udp _sendto_ignerr 0 0,1
udp _wroff_extra 32 0~256
udp _xmit_lowat * 1024 0~1073741824



ICMP
PROTO PROPERTY DEFAULT POSSIBLE
icmp max_buf * 262144 65536~1073741824
icmp recv_buf * 8192 4096~262144
icmp send_buf * 8192 4096~262144
icmp _bsd_compat 1 0,1
icmp _ipv4_ttl * 255 1~255
icmp _ipv6_hoplimit * 60 0~255
icmp _pmtu_discovery 0 0,1
icmp _sendto_ignerr 0 0,1
icmp _wroff_extra 32 0~128
icmp _xmit_lowat * 1024 0~65536


SCTP(Stream Control Transmission Protocol)
PROTO PROPERTY DEFAULT POSSIBLE
sctp cong_default newreno newreno,cubic,
highspeed,vegas
sctp cong_enabled newreno
newreno,cubic,
highspeed,vegas
sctp extra_priv_ports 2049,4045 1~65535
sctp largest_anon_port 65535 32768~65535
sctp max_buf 1048576 102400-1073741824
sctp recv_buf 102400 8192-1048576
sctp send_buf 102400 8192-1048576
sctp smallest_anon_port 32768 1024~65535
sctp smallest_nonpriv_port 1024 1024~32768
sctp _addip_enabled 0 0,1
sctp _cookie_life 60000 10~60000000
sctp _cwnd_max 1048576 128~1073741824
sctp _deferred_ack_interval 100 10~60000
sctp _deferred_acks_max 2 1~16
sctp _fast_rxt_thresh 3 1~10000
sctp _heartbeat_interval 30000 0~86400000
sctp _ignore_path_mtu 0 0,1
sctp _initial_mtu 1500 68~65535
sctp _initial_out_streams 32 1~65535
sctp _initial_ssthresh 1048576 1024-4294967295
sctp _ipv4_ttl 64 1~255
sctp _ipv6_hoplimit 60 0~255
sctp _max_in_streams 32 1~65535
sctp _max_init_retr 8 0~128
sctp _maxburst 4 2~8
sctp _mtu_probe_interval 600000 0~86400000
sctp _naglim_def 4095 1~65535
sctp _new_secret_interval 120000 0~86400000
sctp _pa_max_retr 10 1~128
sctp _pp_max_retr 5 1~128
sctp _prsctp_enabled 1 0,1
sctp _recv_hiwat_minmss 4 1~65536
sctp _rto_initial 3000 1000-60000000
sctp _rto_max 60000 1000~60000000
sctp _rto_min 1000 500~60000
sctp _rtt_updates 20 0~65536
sctp _shutack_wait_bound 60000 0~300000
sctp _slow_start_after_idle 4 1~16384
sctp _slow_start_initial 4 1~16
sctp _snd_lowat_fraction 0 0~16
sctp _wroff_xtra 32 0~256
sctp _xmit_lowat 8192 8192~1073741824

Read more ...