非プログラマーのためのインフォマティクス入門。(仮)

非プログラマーがインフォマティクスについて勉強したことを記録します。主にKNIMEというソフトを使用しています。

非プログラマーのためのインフォマティクス入門。(仮)

【KNIME】メモリが足りない…。ちょっと待って!がっかりするその前に!

みなさん、お元気ですか。

私は、ちょっと用事があって、昨日は久しぶりに都内に出かけました。田舎暮らしが長くなってきたせいなのか、単純に頭が老化しているのかはわかりませんが、

「都心の景観は、情報量が多い!」と感じました。

学生の頃は、都内で暮らしていました。そんなこと考えたことなかったんですよね。田舎からの"おのぼりさん"だったわけですが、あんまりこういう感覚を持ったことはなかったんですよね。やっぱり年のせいですかね。

 さて先日、KNIMEフロー内でのエラー回避について、1例をあげて記事を書きました。

記事を投稿した後、その他に予定外の何かでフローが止まってがっかりする場面ってないかなーと考えていたら、1つ紹介しておくと良さそうな事柄がありました。それはKNIMEのメモリ不足問題です。

そうなんです。KNIMEは結構メモリを食うんです!

f:id:sumtat:20180624155356p:plain

なので、重めの処理・loopの多い処理などをしていると、「おいおい旦那、もうメモリがいっぱいだぜ。悪いんだけど、もう働けねぇや」と言ってKNIMEが止まっちゃうことがあります。

その対応として

  1. ちょっとメモリ不足になりにくくする!
  2. メモリ不足になる前に気がつけるようにする!

の2つについて紹介します。

 

 ちょっとメモリ不足になりにくくする

これはKNIMEの設定ファイルをいじります。KNIMEは設定ファイルに「使用する最大メモリ量」を指定する部分があります。これが、初期設定だと結構少ない。なので、この部分を増やしちゃいます。KNIMEの設定ファイルは"knime.ini"です。

mac

デフォルト状態でインストールを進めたのならば、finder > アプリケーション > knimeX.X.X.app と進んで、右クリックのメニューから"パーケージの内容を表示"を選択します。その中に、Eclipseというフォルダの中に入るとknime.iniを発見できると思います。

 windows

こちらもインストーラに従って、特にカスタムせずにインストールしたならば、C > Program Files > KNIMEと進めばknime.iniがいると思います。

linux

KNIMEのフォルダに行けばあるよ。釈迦に説法だと思いますが、knime-workspaceじゃないよ。

 

まあ、他の探し方でも、とにかくknime.iniにたどり着ければOKです。では中身を開いてみます。するとその中に

-Xmx???m (数字は各々のマシンにより異なる)

という行があると思います。ここに記載されている数字がKNIMEが使用できる最大メモリ量です。ここを増やせば上限が増えるので、メモリ不足になる可能性が下がります。「KNIME以外の作業はしない、ブラウジングすらしない」という方は結構攻めた設定にしてもいいかもしれませんが、私は自分のマシンメモリの半分を指定しています。具体的には、今使用しているマシンのメモリは16 GBなので、Xmx8192mにしています。8Gと記入してOKみたいです。

メモリ不足になる前に気がつけるようにする

KNIMEの画面上で、今どのくらいメモリを使ってるのか表示しておきます。

f:id:sumtat:20180624151812p:plain

こんな感じです。KNIMEで、File > Preferences と進み、立ち上がった画面のGeneralを選択すると、"Show heap status"ってのがあるので、これにチェックを入れます。

f:id:sumtat:20180624152011p:plain

これで、OKするとキャプチャのようなメモリのステータスバーが表示されます。マウスオンするとmaxの値も確認できるので、「aaa M of bbb M」のbbbがmaxの値になってきたら要注意です。*1ゴミ箱アイコンをクリックするか、一旦ワークフローを保存して、KNIMEを再起動するなどして、少しKNIMEをリフレッシュしてあげるとよいと思います。*2

 

やっておいて、損はない設定かなと思います。是非お試しください!

ではまた次回!

*1:maxの値はiniで設定したものよりも少し小さめになっていると思いますが、問題ないと思います。なんですかね?起動用に、少し別でメモリ確保してるんですかね?あんまり詳しいことは分からんです。

*2:個人的にはKNIMEの再起動がおすすめです。ゴミ箱マークはあんまり役立ってる感じがしない…。