#author("2025-06-05T13:39:27+00:00","default:sysosa","sysosa")
#author("2026-02-18T12:11:27+00:00","default:sysosa","sysosa")
***laneを複数作りたい [#h36b281d]
計算ノードを追加していくと「default」laneに追加されていきます. 
この場合、計算を投入すると「default」から計算機が選ばれるが、まぁー一番上の計算ノードが選ばれそこに計算が流れます. &size(10){隣の「Run on specific GPU」を選べばマシン毎が選べなくはないけど、GPUに関する場合のみ};

&ref(2025y06m05d_215726034.png,nolink,70%);
なので「Queue to Lane」の中で計算機を選びたいなら「default」以外のレーンを作ってそこに計算機を参加させます。ここではOSがrocky9な計算ノードグループ(r9)なレーンを作ります.
#code(nonumber){{
cryosparcm cli "add_scheduler_lane('r9','node','rocky9','Works with rockylinux9')"
                               レーン名, node or cluster , レーン名の別名とか, レーン名の説明
}}
これでレーンが作られます. 次にすでに登録している計算機を移します.
#code(nonumber){{
cryosparcm cli "set_scheduler_target_node_lane('rockylinux9','r9')"
                                                登録済みの計算機, レーン名
}}
これで下記のようになります.
&ref(2025y06m05d_220904667.png,nolink,70%);

計算機登録の際に指定のレーンに参加させるには下記のようにします
#code(nonumber){{
./bin/cryosparcw connect --worker rockylinux9 --master cryosparc --port 39000 --nossd --lane r9
}}
新規のレーンに加えたいなら「--newlane」を追記する必要があります

***apacheのReverse Proxyで参照URLはそのままでcryoSPARC masterを別に。 [#q567ac1f]
内側にあるwebコンテンツを外にも繋げる方法として使っていた.
設定としては
#code(nonumber){{
dnf install httpd
}}
「/etc/httpd/conf.d/cs.conf」
#code(nonumber){{
Listen 39000
<VirtualHost *:39000>
        ProxyRequests Off
        RewriteEngine on
        ProxyPass        / http://cryosparc:39000/
        ProxyPassReverse / http://cryosparc:39000/
        RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
        RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
        RewriteRule .* ws://cryosparc:39000%{REQUEST_URI} [P]
</VirtualHost>
}}
あとfirewallに穴をあける.
#code(nonumber){{
firewall-cmd --add-port=39000/tcp --zone=public --permanent
firewall-cmd --reload
}}
selinuxは外しておく



***masterを別のマシンしたけど、参照URLは同じままにしたい. [#af1da277]
絵的にはこんな感じかな
#code(nonumber){{
[win/mac PC] ----> [旧 master] ----> [新 master]   旧masterを見ているけど、実は新masterに渡されている.

[回線図としては]
                     +----[情報コンセント]
                     |
     +-------------[HUB]--------------+
     |               |                |
[win/mac PC]    [旧 master]     [新 master]
}}
同じネットワークに所属している場合です.
[旧 master]でport forwardさせる. 具体的にはfirewall-cmdを使って[旧 master]にルールを追加します
#code(nonumber){{
firewall-cmd --add-forward-port=port=39000:proto=tcp:toport=39000:toaddr=<[新 master]IP> --zone=public --permanent
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload
}}

ルータ越しならそのルータ内で port forward 設定を施せばいい. そうすれば旧URLのままで行ける.
#code(nonumber){{
[win/mac PC] ---@@@雲@@@---[ルータ]-------[旧 master]
                               +----------[新 master]
}}

ルータの設定変更が許可されないなら...前段のfirewall-cmdでport forward設定を行う.

あとnginxやapacheのリバースプロキシを使って受けたリクエストを master に流す方法ある. こちらは nginx/apache を立てる必要があります.

***masterを別のマシンで動かしたい [#x422f61c]
nfsでcryosparc master/worker/database が共有されているなら
基本 cryosparc_master/config.sh の「CRYOSPARC_MASTER_HOSTNAME」の値を移転先に変更します(「hostname -f」 の値を適用)
これで移転先ノードがmasterになれます
元のノードで自動起動を仕掛けているならdisableにしてください.

standaloneで構築されている場合はworkerを一旦外して再登録します
#code(nonumber){{
cryosparcm cli "get_scheduler_targets()"  <--現在登録されているworkerを確認して
cryosparcm cli "remove_scheduler_target_node('rockylinux8.sybyl.local')"  <-- workerノードの登録を削除します

(workerノードにて)
./cryosparc_worker/bin/cryosparcw connect --worker rockylinux9.sybyl.local --master rockylinux9.sybyl.local --port 39000 --ssdpath /scr/cs
}}


***port番号を変更したい [#q7128e39]
39000を39010にしたいとか.
#code(nonumber){{
cryosparcm changeport 39010
}}
で変更可能. config.sh の値も自動で変更されるみたい.

***「WARNING: io_uring support disabled (not supported by kernel), I/O performance may degrade」と表示される [#l0cf190f]
下記参照 RHEL9系でのお話。RHEL8系は関係ないみたい
[[https://discuss.cryosparc.com/t/io-uring-enabling/15564>+https://discuss.cryosparc.com/t/io-uring-enabling/15564]]

#code(nonumber){{
[root@rockylinux9 ~]# sysctl kernel.io_uring_disabled    <-- 現在地確認
kernel.io_uring_disabled = 2

[root@rockylinux9 ~]# sysctl -w kernel.io_uring_disabled=0   <-- 一時的設定
[root@rockylinux9 ~]# sysctl kernel.io_uring_disabled
kernel.io_uring_disabled = 0

(恒久的処置)
[root@rockylinux9 ~]# echo "kernel.io_uring_disabled=0" > /etc/sysctl.d/io_uring.conf
}}


***「Transparent hugepages are enabled, You may encounter stalls or performance problems with CryoSPARC jobs.」と表示される [#sc251570]

v4.6.2で抑えられた問題では?っと思うのだが、普通に出るみたい.
害はなさそうですが、抑えるには「/etc/default/grub」の「GRUB_CMDLINE_LINUX」の末尾に「transparent_hugepage=never」を加えます
#code(nonumber){{
vi /etc/default/grub
 :
GRUB_CMDLINE_LINUX="resume=UUID=fa5375e3-7125-4e3e-b402-748cdb560d29 rhgb quiet nouveau.modeset=0 modprobe.blacklist=nouveau transparent_hugepage=never"    <-- ここ
 : 
}}
そしてこの設定を反映させます。
#code(nonumber){{
「/sys/firmware/efi」があればUEFIでbootなので
grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg

「/sys/firmware/efi」がなければBIOSでbootなので
grub2-mkconfig -o /boot/grub2/grub.cfg
}}
とします

っが、rockylinux9では上手く動かないみたい.
なので [[https://www.mongodb.com/ja-jp/docs/v5.0/tutorial/transparent-huge-pages/>+https://www.mongodb.com/ja-jp/docs/v5.0/tutorial/transparent-huge-pages/]]を参考に
新たなサービス「/etc/systemd/system/disable-transparent-huge-pages.service」を下記内容で作った
#code(nonumber){{
[Unit]
Description=Disable Transparent Hugepages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=mongod.service
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo never | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null'
[Install]
WantedBy=basic.target
}}
その後、このサービスを有効にする. 「systemctl enable disable-transparent-huge-pages」





***cluster運用でメモリーが足りなくてコケる [#dfc74e27]
スタンドアローン,master/woker運用なら関係ないのですが、cluster運用の場合、使っているジョブ管理システムの構成によっては
ジョブに割り当てられるメインメモリー量が制限されます. &size(10){cgroupsとかいうのでね};

っで、「cluster_script.sh」に変数を設けれて、ジョブを発行するパネルでメモリー量に係数(x1, x2, x3とか)が入れられる. これでメインメモリーが少ないとかのエラーをなくす. &size(10){GPUのメモリーではないよ};

[[https://guide.cryosparc.com/setup-configuration-and-management/software-system-guides/guide-configuring-custom-variables-for-cluster-job-submission-scripts>+https://guide.cryosparc.com/setup-configuration-and-management/software-system-guides/guide-configuring-custom-variables-for-cluster-job-submission-scripts]]

***cryoSPARCでtopaz [#de2bf8fe]
GPUオンでtopazの並列度[Number of parallel processes]を1、cpu並列度[Number of CPUs]は既定の8とかがいいみたい(Topaz Extract).
規定値のtopaz並列度8なら処理が重くて落ちるそうな (K様ご指摘ありがとうございます)


***ここに書かせたい. ここを読んでほしい [#h1d5d37d]
自分以外のアカウント(例: cryosparc)でcryoSPARCサービスを運用していると、自分のアカウントのホームディレクトリにあるファイルを読ませるために
#code(nonumber){{
chmod 755 $HOME
mkdir $HOME/cryosparc
chmod 777 $HOME/cryosparc
}}
と設定を緩くしてしまう... これだと他人が $HOME/cryosparc に入ってファイルを読めたり消したりできてしまいます
じゃぁーどうるかとなりますが、[[ACL]]を使います

今時の$HOMEは 750 とかセキュア的に強固です. っでまずはユーザcryosparcに $HOME に入って頂くために
#code(nonumber){{
cd /home
setfacl -m user:cryosparc:rx $HOME
}}
これでユーザcryosparcは、$HOMEの中に入れて$HOME直下のフォルダ/ファイル類が見えるようになります
他の方は$HOMEに入れないので、ある意味これで十分かも.

あとはcryoSPARC向けのフォルダを作って書き込み権限を付与させる
#code(nonumber){{
mkdir $HOME/cryo
chmod 777 $HOME/cryo
}}
とかでもいいのかなと.

もっとエレガントにしたいのなら
#code(nonumber){{
mkdir $HOME/cryo
setfacl  -m  user:cryosparc:rwx  $HOME/cryo
setfacl  -dm user:cryosparc:rwx  $HOME/cryo

(ユーザ cryosparc が作成したフォルダを弄るために)
setfacl  -dm user:$USER:rwx      $HOME/cryo
}}
とします. 「m」は既存からの修正. 「d」は設定が既定値との意味. 「R」を付けると、そのファルダの配下に既に存在しているフォルダ・ファイルにも適用することを意味します.

「777」よりはだいぶいいかと. 

***/homeがNFS先で ACL が使えない。。。 [#k270c14f]
NFS_ACLは難解なので、グループパーミッションを駆使します。

cryoSPARCを動かすユーザが、cryosparcで、グループ名もcryosparcとします。この「cryosparc」グループに他のユーザを参加させます。
usermodを使います
#code(nonumber){{
usermod -aG cryosparc saber
(ユーザsaberをcryosparcグループに参加させる)

また逆に
usermod -aG saber cryosparc
(ユーザcryosparcをsaberグループに参加させる)
}}


そして大事な点ですが、作れるファイル、フォルダは全てグループパーミッションが「rwx」であること。
これは「/etc/login.defs」を修正します
#code(nonumber){{
UMASK           022

UMASK           002
}}

これでcryosparcで用意されたファイルに読み書き修正ができて、逆に自分で用意したファイルをcryosparcが読み書き修正できます

***update_cluster_job_status ERROR [#id8aa075]
cryoSPARCでジョブ管理システムを使っているとたまに発生します.

「このジョブは終わったかい?」とジョブ管理システムに問い合わせを掛けるのですが、「そんなん知らん」と帰ってくると流れるエラーって感じ
この問い合わせは結構頻繁に行うので、エラーでログが埋まります。
支障あるって訳ではないですが、お掃除は必要かなと。
「&color(red){COMMAND.SCHEDULER    update_cluster_job_status ERROR    | Cluster job status update for P10 J50 failed with exit code 35};」
上記の場合は P10のJ50を「killed」にしたとcryoSPARC側に登録すれば問い合わせが無くなってハッピーになります
っで方法
#code(nonumber){{
cryosparcm cli "set_job_status('P10','J50','killed')"
}}




***RockyLinux8.6で cryoSPARC v4.1.0 の 3D Flex を入れようとしたらエラー [#sf71c914]
削除(解決済み)


***SSDにたまったファイルを自動削除 [#t7906f16]
「config.sh」に
#code(nonumber){{
export CRYOSPARC_SSD_CACHE_LIFETIME_DAYS=7
}}
と追記すれば7日で消えるそうな




***うまく動かない [#o1264197]
clustersのlaneにはジョブが流れるが、Master-Workerで登録したnodeにジョブを投げると
「symbol lookup error: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b」
とエラーが発生する. &size(10){worker/worker共にRockyLinux8.5};
調べるとOS由来の openssl と cryoSPARCのcondaでインストールされたopensslで参照優先の違いっぽい. (未確定)
っで面倒なのでアプリを再インストールしてみる
databaseと演算場所は残して、cryosparc_worker cryosparc_master cryosparc2_workerらは削除する &size(10){あるいはrenameします. databaseフォルダもバックアップを取ります};
&color(red){*};注意: 同じcryoSPARCのバージョンで再インストールします
#code(nonumber){{
cd ~/cryoSPARC
rm -rf cryosparc_worker cryosparc_master cryosparc2_worker
tar xf src/cryosparc_master.tar.gz
tar xf src/cryosparc_worker.tar.gz
./cryosparc_master/install.sh --license xxxxxx --hostname c --dbpath $HOME/cryoSPARC/database --port 39000
./cryosparc_worker/install.sh --license xxxxxx --cudapath /usr/local/cuda-11.5

cryosparcm start
}}
clusters形式とかMaster-Worker形式の情報はデータベースに残っているので、特段追加作業せずに使えます

***起動しない [#b294b219]
「cryosparcm start」で下記文言が表示されて止まるなら、すでにdatabaseが動いている事. Master-Worker形式でどこかの計算ノードで cryosparc のプロセスがないかを調べてkillする
#code(nonumber){{
Starting cryoSPARC System master process..
CryoSPARC is not already running.
database: ERROR (spawn error)
}}

あるいはcryoSPARCのデータベースが破損している可能性があります。
その際は
#code(nonumber){{
eval $(cryosparcm env)
cd cryosparc2_database
mongod --dbpath ./ --repair
}}
で直す  参照先[[https://discuss.cryosparc.com/t/please-advise-database-error-spawn-error/6547>+https://discuss.cryosparc.com/t/please-advise-database-error-spawn-error/6547]]

あるいは、既にdatabaseが動いているがり、その際は「ps -ef |grep mongod」でmongoDBのプロセスを見つけてkillします.




***workerたち [#k02325fc]
cryoSPARCのworkerたちは下記コマンドで得られる  &size(10){cryoSPARCサービスを起動していないとえらになります};
#code(nonumber){{
[illya@c ~]$ cryosparcm cli "get_scheduler_lanes()"
[{'desc': '', 'name': 'pbscluster', 'title': 'Lane pbscluster (cluster)', 'type': 'cluster'},    <--- clusters形式のscheduler
 {'desc': '', 'name': 'run-on-s', 'title': 'Lane run-on-s (cluster)', 'type': 'cluster'},        <--- 同じ
 {'desc': '', 'name': 'default', 'title': 'Lane default (node)', 'type': 'node'}]                <--- Master-Worker形式
[illya@c ~]$
}}
&color(red){*};&size(10){表示は一行なのですが、改行コードを入れて見やすくしています};
不要となったschedulerは、「&color(magenta){cryosparcm cli "remove_scheduler_lane('"};&color(orangered){pbscluster};&color(magenta){')"};」とかで消せるけど、
"default"を指定して消すとMaster-Worker形式で登録したノードがすべて消えます.

っでMaster-Worker形式は "get_scheduler_lanes()" では一括りですが、個別に何があるかは "get_worker_nodes()" を使う
#code(nonumber){{
[illya@c ~]$ cryosparcm cli "get_worker_nodes()"
[{'cache_path': '/scratch/cs_illya', 'cache_quota_mb': None, 'cache_reserve_mb': 10000, 'desc': None, 'gpus': [(略)],
'hostname': 'gpu01', 'lane': 'default', 'monitor_port': None, 
'name': 'gpu01', 'resource_fixed': {略}, 'resource_slots': {略},
'ssh_str': 'illya@gpu01', 'title': 'Worker node gpu01', 'type': 'node', 'worker_bin_path': '/home/illya/cryoSPARC/cryosparc_worker/bin/cryosparcw'},

 {'cache_path': '/scratch/cs_illya', 'cache_quota_mb': None, 'cache_reserve_mb': 10000, 'desc': None, 'gpus': [(略)],
'hostname': 'gpu02', 'lane': 'default', 'monitor_port': None, 
'name': 'gpu02', 'resource_fixed': {略}, 'resource_slots': {略},
'ssh_str': 'illya@gpu02', 'title': 'Worker node gpu02', 'type': 'node', 'worker_bin_path': '/home/illya/cryoSPARC/cryosparc_worker/bin/cryosparcw'}
]
[illya@c ~]$
}}
&color(red){*};&size(10){表示は一行なのですが、改行コードや文字列を一部省略して見やすくしています};
値を変更したいなら "set_scheduler_target_property(hostname, key, value)" を使う
簡単には
#code(nonumber){{
[illya@c ~]$ cryosparcm cli "set_scheduler_target_property('gpu01','desc','main server')" <-- Master-Workerのgpu01のdescパラメータを更新します
}}
とかで使います.



***起動が途中で止まる [#y33a1d77]
例えば
#code(nonumber){{
[saber@cryosparc ~]$ cryosparcm start
Starting cryoSPARC System master process..
CryoSPARC is not already running.
database: started
command_core: started

}}
で止まってしまう場合がある. これはそのcryoSPARCサーバの名前解決がうまく行っていないか、proxyの除外設定に入っていないとかで起こるみたい。
前者は「/etc/hosts」にipと名前を記載する
後者は「export no_proxy="127.0.0.1,localhost,<ホスト名>"」を「cryosparc_master/config.sh」に記載する

ただ、前者の対応で起動できてもジョブを投げるとライセンス認証が受けられなくてエラーになる場合があるみたい.
その場合は「cryosparc_master/config.sh」にproxyサーバとかを記載します
#code(nonumber){{
[illya@s ~]$ cat cryoSPARC/cryosparc_master/config.sh
export CRYOSPARC_LICENSE_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export CRYOSPARC_MASTER_HOSTNAME="s.sybyl.local"
export CRYOSPARC_DB_PATH="/home/illya/cryoSPARC/cryosparc_database"
export CRYOSPARC_BASE_PORT=39000
export CRYOSPARC_DEVELOP=false
export CRYOSPARC_INSECURE=false
export CRYOSPARC_CLICK_WRAP=true

export no_proxy="127.0.0.1,localhost,s.sybyl.local,s"
export http_proxy="http://<proxyサーバのIP>:<proxy port>"
export https_proxy="http://<proxyサーバのIP>:<proxy port>"

[illya@s ~]$
}}

***起動が途中で止まる(2nd) [#o3d26328]
「cryosparcm start」で
#code(nonumber){{
Starting CryoSPARC System master process...
CryoSPARC is not already running.
configuring database...
    configuration complete
database: started
Warning: Could not get database status (attempt 1/3)
Warning: Could not get database status (attempt 2/3)
Warning: Could not get database status (attempt 3/3)
 :
}}
となるのはホスト名に&color(magenta){大文字};を含むため. 例えば「CRYO-WS1」とかはダメ見たい.
回避策としては /etc/hosts に大文字でエントリーを加える
#code(nonumber){{
10.10.10.100 CRYO-WS1
}}
とかで.   &size(10){小文字なら/etc/hostsに記載しなくてもいいみたい. でも本来ホスト名って小文字かなと思うのだが....};

***ライセンスコードの確認 [#hceba600]

下記を実行して正規のコードなら「{"success": true}」と表記されます
#code(nonumber){{
curl https://get.cryosparc.com/checklicenseexists/"ライセンスコード"
}}

もしproxyを利用されているなら「-x」でproxyサーバを指定する
#code(nonumber){{
curl https://get.cryosparc.com/checklicenseexists/"ライセンスコード" -x http://10.10.10.1:3128
}}

***「cryosparcm stop」が効かない [#x7328e0e]
挙動が微妙なのでcryosparcを再起動させようにも「cryosparcm stop」をしても「ps -ef |grep cryosparc」でプロセスが残る..

「cryosparcm start」の際に「/tmp」に sock ファイルを残します。このsockファイルを使って「cryosparcm stop」を
行うのですが、OSの「systemd-tmpfiles」で/tmpにあるファイルはアクセスが10日以上ないファイルを削除します。
そのために「cryosparcm stop」が効かない事態が発生します。

応急措置的には 「ps -ef |grep cryosparc」で親プロセスが「1」のプロセスを「kill」するか、「ps -ef |grep supervisord」のプロセスをkillして下さい。

その後に「cryosparcm start」とかして下さい。

恒久的な対応としては、「systemd-tmpfiles」の仕組みを弄る.
「systemd-tmpfiles」の設定ファイルは「/etc/tmpfiles.d/*.conf」「/run/tmpfiles.d/*.conf」「/usr/lib/tmpfiles.d/*.conf」なそうな.
「/etc/tmpfiles.d/」に新規ファイルを用意するのもあるけど、「/usr/lib/tmpfiles.d/」に既に規定されているものに「追加」するのが簡単そうである。
なので
#code(nonumber){{
[root@s ~]# vi /usr/lib/tmpfiles.d/tmp.conf
 :
 :
# cryoSPARC
x /tmp/cryosparc-supervisor-*
x /tmp/mongodb-*

[root@s ~]#
}}
とします。




***最新のcudaライブラリに変更したので cryoSPARC も更新してみる [#e95ca9fa]
&color(red){v4.4以上ではこの作業は不要です. cryoSPARC内にcudaライブラリを持つようになったので}; &size(10){力技過ぎる..};


cryoSPARCの計算にGPUで計算する項目がある. っでそのGPU計算には cuda ライブラリが必須.
別に必須なわけではないが、cudaライブラリ を更新するなら同時に cryoSPARC もそれに合わせて更新することも出来る.

&color(red){*};&size(10){別に問題がなければそのままでも構わない};

cudaライブラリの更新に伴い cryoSPARC も更新なら対象は worker 部分.

単純に
#code(nonumber){{
[cryosparc@s cryosparc_worker]$ ./bin/cryosparcw newcuda /usr/local/cuda-11.3
}}




***外部らのアクセスを制限したい [#z2e5c7e1]
ほとんどfirewallな話なのですが、cryoSPARCはwebサービスなのでここに記載します

webサービスのポートは既定で39000を使用してます。
cryoSPARCのドキュメントでは連続10個のportを使用するようなので、39000を指定したら 39010 まで抑える必要がある。

1つの計算機で複数のインスタンスを立ち上げるなら、次のユーザは 39011 からスタートとなるが切りのいい数字 39020 を次のインスタンスに割り当てた方がよさそう.

っで
#code(nonumber){{
firewall-cmd  --add-port=39000-39010/tcp --zone=public --permanent

firewall-cmd  --add-port=39020-39030/tcp --zone=public --permanent

firewall-cmd  --add-port=39040-39050/tcp --zone=public --permanent

firewall-cmd  --add-port=39060-39070/tcp --zone=public --permanent


(あと接続元を制限したいなら下記も追加. 注:他のサービス[ssh]らも同時に制限されます)
firewall-cmd  --add-source=192.168.0.0/24 --zone=public  --permanent

(最後に)
firewall-cmd --reload
}}

***外部からのアクセスをipアドレスベースで制限したい [#m66f6b33]
外部に直接cryoSPARCサーバが晒されている場合で特定のipからしかアクセスさせないなら

#code(nonumber){{
firewall-cmd --permanent --zone=external --add-rich-rule="rule family="ipv4" source address="133.x.x.x" port protocol="tcp" port="39000" accept"

(あるいは)
firewall-cmd --zone=external --add-rich-rule="rule family="ipv4" source address="133.x.x.x" port protocol="tcp" port="39000" accept"
firewall-cmd --runtime-to-permanent


firewall-cmd --reload

(確認)
firewall-cmd --list-all --zone=external
}}
とする

***ssdを無効から有効に変更する [#t0c75189]

#code(nonumber){{
bin/cryosparcw connect --worker c.sybyl.local --master c.sybyl.local --port 39000 --update --ssdpath /scratch/cryosparc_cache
}}

現状の設定内容は下記コマンドで確認可能
#code(nonumber){{
cryosparcm cli "get_config_var(name='targets', colname='sched_config')"
}}

***計算機を再起動したら [#g32d921a]

計算機を再起動すると cryosparc も停止します。自動起動はないみたい。
っでそれを起動させるには
-cryosparcユーザになる
一旦rootになって「su - cryosparc」になっても可。直接「su - cryosparc」でも可
-「&color(magenta){cryosparcm start};」を実行する

これで行けます。もし立ち上がらないのなら

-「&color(magenta){cryosparcm restart};」

あるいは、「/tmp/cryosparc-supervisor-******.sock」があって起動しないとのメッセージがあるのなら
-「&color(red){/bin/rm -f  /tmp/cryosparc-supervisor-******.sock};」

としてそのファイルを削除してから「&color(magenta){cryosparcm start};」としてください。

あとは珠にcryosparcのサービスが勝手に停止している場合があります。
その場合、プロセスの残骸が生きていてうまくサービスの再開ができない場合がありますので、
-「&color(magenta){cryosparcm stop};」

の後に
root権限になって「ps -ef |grep cryosparc」でまだ生き残っているプロセスをkillします。
簡単な方法としては、計算機の再起動を行ってください。
そうした上で「&color(magenta){cryosparcm start};」としてください。

***ユーザの追加とか [#jdaeba05]
cryosparcユーザになってから。

-現在の登録済みユーザ一覧
「cryosparcm listusers」
-ユーザ作成
「cryosparcm createuser --email saber_at_chaperone.jp --password artoria --username SABER --firstname Artoria --lastname Pendragon」
-パスワード変更
「cryosparcm resetpassword --email saber_at_chaperone.jp --password starving」
-ユーザ情報の変更
「cryosparcm updateuser --email saber_at_chaperone.jp --password starving --username alternative --admin true」
emailとパスワードをキーとして、「name」と「admin(管理者)」かどうかを定義できます
-ユーザの削除
「cryosparcm cli "delete_user('削除したいユーザのメールアドレス', '管理者のメールアドレス', '管理者のパスワード')"」
で行う。
管理者自分自身を削除するには下記のようにします
「cryosparcm cli "delete_user('saber_at_chaperone.jp', 'saber_at_chaperone.jp', 'starving')"」


***再起動時に自動的にサービスをupするには [#xcaa7b78]
以前のバージョンには「cryosparc autostart」でcronを駆使した再起動時自動upが施されるのだが、
今のバージョンではその機能が消えてしまったみたい。


***High resolution image of 2D classification [#g7ed1496]
[[https://discuss.cryosparc.com/t/high-resolution-image-of-2d-classification/3395]]

実行するにはまずpythonをcryoSPARCのpythonに切り替える必要がある。
それと「CRYOSPARC_ROOT_DIR」の定義も必要みたい。

これらは単純に
#code(nonumber){{
export PATH=/home/cryosparc/software/cryosparc/cryosparc2_master/deps/anaconda/bin:$PATH
export CRYOSPARC_ROOT_DIR=/home/cryosparc/software/cryosparc/cryosparc2_master
}}
でいいみたい。

次にpythonを立ち上げる
#code(nonumber){{
[saber@c ~]$ which python
/home/cryosparc/software/cryosparc/cryosparc2_master/deps/anaconda/bin/python

[saber@c ~]$ python
Python 2.7.15 |Anaconda, Inc.| (default, Oct 10 2018, 21:32:13)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import os
>>> os.chdir(os.environ['CRYOSPARC_ROOT_DIR'])
>>> from cryosparc2_compute import plotutil
>>> from cryosparc2_compute.blobio import mrc
>>> import matplotlib.pyplot as plt
>>> 
>>> mrc_path_abs = '/home/saber/relion30_tutorial_precalculated_results/Class2D/job015/run_it025_classes.mrcs'
>>> plt=plotutil.plot_2D_classes(template_mrc, rows=3, cols=3)
>>> plt.show()
}}

これで下記のような画面が表示される。
&ref(2020y02m19d_232235788.png,nolink);


***他のユーザのcryoSPARCアプリをコピーして使う [#mf1d88f6]
既に動ている他のユーザのcryosparcアプリを自分のディレクトリーにコピーします
#code(nonumber){{
[saber@s ~]$ cp -r /home/cryosparc/cryoSPARC /home/saber/cryoSPARC
}}
そして.bashrcに「export PATH="/home/saber/cryoSPARC/cryosparc_master/bin":$PATH」としてPATHを通して
下記のように修正を行います

#code(nonumber){{
[saber@s ~]$ vi cryoSPARC/cryosparc_master/config.sh
export CRYOSPARC_LICENSE_ID="ccccccccccccccccccccccccccccccccccccccccccccccc"
export CRYOSPARC_MASTER_HOSTNAME="s.sybyl.local"
export CRYOSPARC_DB_PATH="/home/saber/cryoSPARC/cryosparc_database"
export CRYOSPARC_BASE_PORT=39000
export CRYOSPARC_DEVELOP=false
export CRYOSPARC_INSECURE=false
export CRYOSPARC_CLICK_WRAP=true

#(下記を追加)
export CRYOSPARC_FORCE_USER=true
[saber@s ~]$
}}
その上で「cryosparcm start」を実行します


***RockyLinux8.5で古いcryoSPARCをインストールしても動かない [#w94dbd78]
cryoSPARCのtar.gzを展開して、ライセンスコードとともにインストールを行う。
だが、その後「cryosparcm start」としても下記のように止まってしまう
#code(nonumber){{
Starting cryoSPARC System master process..
CryoSPARC is not already running.
database: started
command_core: ERROR (spawn error)
}}
こういった場合は、ログファイルで何が原因かが大抵書かれている。
ログファイルは 「cryosparc2_master/run」にある。

今回の場合は
#code(nonumber){{
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "cryosparc2_command/command_core/__init__.py", line 33, in <module>
    from flask_jsonrpc import JSONRPC
ImportError: No module named flask_jsonrpc
}}
とあったのでcryoSPARCの稼働に必要なpythonパッケージが不足していた模様. それを追加します。

cryoSPARCで使用しているpython環境に移る必要がありますが、下記にて移れます
#code(nonumber){{
eval $(./cryosparc2_master/bin/cryosparcm env)
}}

その後、「pip install flask_jsonrpc」でパッケージ追加を試みますが、、、
「&color(magenta){AttributeError: 'int' object has no attribute 'endswith'};」
とエラーが発生して失敗.

幸いにcryoSPARCの中にそのソースパッケージがありましたのでれを使います
#code(nonumber){{
cd cryosparc2_master/deps_bundle/python/python_packages/pip_packages/
cp Flask-JSONRPC-0.3.1.tar.gz Flask-PyMongo-0.5.1.tar.gz libtiff-0.4.2.tar.gz /tmp
cd /tmp
tar xf Flask-JSONRPC-0.3.1.tar.gz
cd Flask-JSONRPC-0.3.1
  python setup.py build 
  python setup.py install

tar xf Flask-PyMongo-0.5.1.tar.gz
  cd Flask-PyMongo-0.5.1
  python setup.py build 
  python setup.py install

}}
を施して「cryosparcm start」に成功した


その後、同じような現象が cryosparc_workerでも発生した....調べて原因は pip が古かった.
どうやら「&color(magenta){PIP_NO_CACHE_DIR=off};」を有効にすればすべて上手く行くみたい.....


***cryoSPARCユーザのuidを変更したい [#g416792e]
cryoSPARCプロセスを全部落としてから「usermod」でUID/GIDら/etc/passwd関係を修正後、
「chown -R cryosparc. /home/cryosparc」でファイル所有権も変更します
大抵はこれでOKですが、それでいて起動しない時がある.
その際は「/tmp/cryosparc-supervisor-*」や「/tmp/mongodb-*」の有無とか確認します
あと「/etc/hosts」に自ホスト存在確認でしょうか
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS