diff options
author | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2019-04-10 14:09:58 +0530 |
---|---|---|
committer | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2019-06-11 15:17:40 +0530 |
commit | 7917ef55f6279fa28519d2160c4ec49453c275ec (patch) | |
tree | a7cb45ae99afe8dad93ed204ecc24b7efadbb87c /systemd | |
parent | e84b89ed709f4f291fbdd8c42b48e2ca187a57ba (diff) | |
download | targetcli-7917ef55f6279fa28519d2160c4ec49453c275ec.tar.gz |
targetclid: add daemonize component for targetcli
Problem:
-------
Overall creation time of a block using targetcli is raising linearly as the
block count increase.
This is because of the recurring issue involving refresh(reload) at
multiple objects/places, as the LIO's configfs is deeply nested.
Earlier discussion of the problem statement with stats and graphs about delays:
http://bit.ly/targetcli-create-delay
Solution:
--------
Introduce a daemon component for targetcli[d] which will retain state of
Configshell object in memory, so that any new requests can directly use it,
instead of loading the storageObjects/targetObjects again.
Details about "how to use it ?":
-------------------------------
$ systemctl start targetclid
$ systemctl status targetclid
● targetclid.service - Targetcli daemon
Loaded: loaded (/usr/lib/systemd/system/targetclid.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2019-04-10 12:19:51 IST; 2h 17min ago
Main PID: 3950 (targetclid)
Tasks: 3 (limit: 4915)
CGroup: /system.slice/targetclid.service
└─3950 /usr/bin/python /usr/bin/targetclid
Apr 10 12:19:51 localhost.localdomain systemd[1]: Started Targetcli daemon.
$ targetcli help
Usage: /usr/bin/targetcli [--version|--help|CMD|--tcp]
--version Print version
--help Print this information
CMD Run targetcli shell command and exit
<nothing> Enter configuration shell
--tcp CMD Pass targetcli command to targetclid
--tcp <nothing> Enter multi-line command mode for targetclid
See man page for more information.
One line command usage:
----------------------
$ targetcli --tcp CMD
Eg:
$ targetcli --tcp pwd
/
Multiple line commands usage:
----------------------------
$ targetcli --tcp
CMD1
CMD2
.
.
CMDN
exit
Eg:
$ targetcli --tcp
^Tab
/ backstores/ iscsi/ loopback/ vhost/ xen-pvscsi/ cd
clearconfig exit get help ls pwd refresh
restoreconfig saveconfig set status
pwd
get global logfile
get global auto_save_on_exit
/ saveconfig
exit
output follows:
/
logfile=/var/log/gluster-block/gluster-block-configshell.log
auto_save_on_exit=false
Configuration saved to /etc/target/saveconfig.json
Stats with and without changes:
------------------------------
Running simple 'pwd' command after creating 1000 blocks on a node:
Without this change:
$ time targetcli pwd
/
real 0m8.963s
user 0m7.775s
sys 0m1.103s
with daemonize changes:
$ time targetcli --tcp "pwd"
/
real 0m0.126s
user 0m0.099s
sys 0m0.024s
Thanks to Maurizio for hangingout with me for all the discussions involved.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Diffstat (limited to 'systemd')
-rw-r--r-- | systemd/targetclid.service | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/systemd/targetclid.service b/systemd/targetclid.service new file mode 100644 index 0000000..2de9100 --- /dev/null +++ b/systemd/targetclid.service @@ -0,0 +1,10 @@ +[Unit] +Description=Targetcli daemon + +[Service] +Type=simple +ExecStart=/usr/bin/targetclid +Restart=on-failure + +[Install] +WantedBy=multi-user.target |