ソフトウェア開発

PythonのGlobal Interpreter Lock (GIL) について

Python (CPython) では、インタープリターはひとつしかない。このため、複数のスレッドを走らせた場合、ある時点ではひとつのスレッドしか動かない。このためのスレッド同期機構を、Global Interpreter Lock (GIL) という。PythonでのGIL自体は、1992年の初…

 Pythonのバイトコードまで

PythonスクリプトからPythonのバイトコードまで、どうなっているかを追いかけてみた。 具体的には、Pythonスクリプトから、pycファイルが保存されるまでである。 コマンドラインやスクリプトで実行する場合は以下に相当する # python -m compileall file.py …

Heat/Autoscaling

HeatのAutoScalingは、Ceilometer (Newtonからは、Aodh)のサーバ等の負荷の信号を用いて、スケールさせる。 フローとしては、以下の通り Heat EngineからCeilometerにシグナルを登録 Ceilometerから、Heat_API_CFNに変更を通知 Heat_API_CFNから、Heat Engin…

Python2*3(six)での違い(printの改行)

Pythonの版数が、2から3になったことに伴いprint文の位置づけが、ステートメントから関数に変わっている。このためか改行の方法も、変わっている。 版数違いの互換性を確保するためには、sixを使って動くように直す必要がある。 Six: Python 2 and 3 Compati…

OpenStackでのoslo_service/eventlet/greenlet

OpenStackの各コンポでWSGI (Web Service Gateway Interface) をどう実現しているか?の観点で見ると、eventlet.wsgiを使っている場合が多い。 そして、eventlet.wsgiを効率的に動かすために、Greenletを使っている。なお、Greenletは、C言語拡張モジュールに…

OpenStackでのPythonコーディング規約チェック

OpenStackの場合hackingモジュールでPythonコード規約をチェックする。ただし、個別のコード規約は、モジュール毎のHACKING.rstに記載されている。そして、実際の個別チェックツールもhackingディレクトリにスクリプトがおかれている。出力されるエラーコー…

 深層学習のセミナーにて(学習法とか)

Techfeedさんが開催した深層学習のセミナー(8/10 東京駅近く)にちょっと参加してみた。 TechFeed - Technology-specific information gathering & sharing service. 機械学習を学習する場合、アルゴリズムだけでなく、データも必要であり、どのように調達す…

 PDFファイルの版数変換

PDFファイルの版数変換は、ghostscriptで出来ることを今更ながら知る。なお、Windows版だと、gsの代わりにgswin32を実行すればよい。 Use Ghostscript to convert PDF files | Notes to myself これを知らないと、コンビニでの印刷が出来無かったりと、いろ…

cURLでOpenStackを操作する。

DevStack環境を構築した後、cURLで、OpenStackを操作してみた。これにより、OpenStackでの基本的な認証フローがわかるようになる。 keystoneに接続してtokenを取得する。下が出力例 curl -X POST http://aaa.bbb.ccc.ddd:5000/v2.0/tokens -H "Content-Type:…

OpenStackパッチ投稿環境の作成

パッチ投稿が出来る環境でないと、開発が始まらないのでメモ gitの設定 sudo apt-get install git gitのパラメータ(user.name, user.email, gitreview.name等)を設定 sshの設定 鍵の作成 鍵の(OpenStack)gerritへの登録 (任意)ssh-agentでパスフレーズ登録 …

DevStackをAWSで構築してみる

DevStackは、簡単に設定できると聞いて設定してみる。All-in-OneVMで、heatやneutronのコマンドを調べてみた。 AWSの画面も3年ぶりぐらいで見たが、ずいぶん整理されており、親切になっている。また、スポットインスタンスで作業するなら、1時間1.5円程度、…

Python関連文書

3.7.3 Documentation Python 2.7.16 documentation 細かい話 Developer Python Developer's Guide | Python.org Code Style PEP 8 -- Style Guide for Python Code | Python.org Grammer 10. Full Grammar specification — Python 3.7.3 documentation Decor…

Proxy越えとか

まともに、毎回パスワードを打っていると腱鞘炎になりそうなのでメモ パスワードの登録 SOCKS5プロキシを利用したSSH接続 - Qiita SOCKS5の設定 http://techblog.clara.jp/2014/07/ssh-agent/ SSHのパスワード登録 とはいえ OpenStackのGerrit(review.openst…

VirtualBox

ドラッグアンドドロップは、5.0から Chapter 4. Guest Additions Changelog – Oracle VM VirtualBox Guest Additionsのインストール失敗時 Oracle VM Virtual Box Guest Additions installation failure in Fedora 17 - Ask Fedora: Community Knowledge Bas…

XML Parser on JRuby

Benchmarks projects - Revision 28056: /trunk/common/ruby/xml_benchmarks GitHub - stepheneb/rails_hash_from_xml: Benchmarking ActiveSupport: Hash.from_xml with a 1.7 MB xml file. REXML REXML - Home Nokogiri Redirecting... Google グループ(No…

 Open Network Summit 2015の講演のメモ

Open Network Summit 2015の講演のメモ ONS 2015: Wednesday Keynote - Amin Vahdat - YouTube 1分 講演概要 4分 Google Techinical Infrastructure gRPC/B4/Andromeda 5 gen of Data Center Network Freedome/GGC/Jupiter 9分 Google Data Center Network T…

USENIX FAST15(3月分)

3月以降進んでいない。まあ、匍匐前進というところか Chronicle: Capture and Analysis of NFS Workloads at Line Rate | USENIX NFSのトラフィックをワイヤーレートで監視できるツールを作ったという論文。想定しているのは10GbEなので、高パフォーマンスと…

形式手法 (Formal Methods) についての調査

AWSがFormal Methodsを使っているというので、見てみる。分散アルゴリズムの検証に、形式手法が有効だったという話である。調べてみると、ACMの記事になる4年も前から、発表されていたらしい。 論文によると How Amazon Web Services Uses Formal Methods | …

Go 1.5で簡単に構築できるようになるクロスコンパイル環境

Go 1.4までは、コンパイラ作成時に一部GCC依存の部分があった。このため、Windowsにgoを入れても、Linuxのバイナリを作るためには、goのインストールだけではだめで、gccを別に入れる必要があった。 この状況が、Go 1.5から改善され、Goコンパイラで作業が閉…

go言語(golang)のサンプルコード(http.Client on Docker/Kubernetes)

go言語のサンプルコードが必要になったため、Docker/Kubernetesのソースコードの中で検索中。単にhttp.Clientのコードの利用例を探している。 とはいえ、コードを見てみると、WebSocketやSPDY等々いろいろ使われていることがわかり、勉強になる。 Docker mob…

Goコンパイラの構造

Goコンパイラの構造およびソースコードについてよい資料があったのでメモ。 なお、記事の中のソースコード版数は、Go1.4となっている。コンパイルのフローは概要レベルでは網羅している。 参考資料 Golang Internals, Part 1: Main Concepts and Project Str…

Erlang VM

Erlangの軽量プロセスが軽いというので、ちょっと眺めている。 Erlangは、BEAMという仮想機械で動作する。BEAMのソースコードは、erts/emulator/beam以下にある。コンパイルは、erlcコマンドで、.erlから.beamに変換することにより行う。 さて、軽量プロセス…

Apache HTTPDの70007エラー

Apache HTTPDで70007エラーを見かけたのでコード検索した。はじめに、HTTPDのコードを探したが見当たらなかった。そこで、Apache HTTPDは、Apache APR (Apache Portable Runtime) の上で動いていることを思い出し、Apache APRを検索し見つけた (コード上の変…

USENIX FAST15の論文を読んでみた。(2月分)

たらたらと、USENIX FAST 15の論文を読んでいる。ぱっと見、大容量対策のErasure Encodingの活用方法と、応答速度改善対策であるFlashメモリによる性能最適化ネタが2つの柱に見えた。 Failure-Atomic Updates of Application Data in a Linux File System | …

 半導体市場におけるサーバ向け半導体の割合

ふと思うと、Gartnerが、半導体のユーザ購買割合を出していた。また、Intelは最近決算を出したばかり。 ということで、Intelのデータセンター部門売り上げ(14.4B)を半導体市場全体(339.9B)で割ると、大まかなサーバ用CPUの売り上げ割合がわかることに気がつ…

HMM (Heterogeneous Memory Management) v7

デバイスのアドレス空間とCPUのプロセスアドレス空間を、ミラーする仕組みである。ただし、これをするとうれしいアプリケーションが今一歩わからない。HMMの参考文献のPDFの最後のページにユースケースが書いてはあるのだけど。そんなにGPU前提のアプリケー…

OpenStackの統計の見方

OpenStackの貢献度の統計はいくつか見ることが出来るので簡単に紹介 OpenStackの貢献者数 Stackalytics | Official community contribution during OpenStack Juno release commitsを選択して、その後Contribution by EngineersでAllを選択すると何人貢献し…

Qemu上のライブマイグレーションに関する構造体

Qemuのライブマイグレーションに関する資料を、ちょっと眺めてみた。以下は、それに関する資料のリスト。 もちろん、いろいろと細かいテクニック(たとえば、メモリを大量に消費するアプリケーション用のマイグレーション等)の資料もQemuの文書にあるので、そ…

 データセンターの運営コストの日米比較

日米で、データセンターの設備やサーバのコストが変わらず、電気料金だけが異なるとの記事を見かけたので、ちょっと計算。米国では、データセンターの運営費の13%を、電力料金が占めている。そして、日本では、電力料金が3倍するから比較的簡単に計算できる…

Linuxのブートプロセスを見る

ひさしぶりに"Linuxのブートプロセスを見る"が出たので購入した。前は、32ビットベースだったが、今回は64ビットベースになっている。10年ぶりの本なのでカーネルやブートローダは、Fedora17(kernel-3.3.4)ベースに更新されている。参考までに、RHEL6(kernel…