[re-adding the list]

It's not related to the version of qemu. When qemu starts up, it
creates the admin socket file, but it needs write access to do that.

Does the user running qemu (libvirt-qemu on ubuntu) have write access
to /var/run/ceph? It may be unix permissions blocking it, or apparmor
or selinux if those are enabled.

On 11/27/2013 07:20 PM, Shu, Xinxin wrote:
Hi josh,
   Thanks for your reply,  the pid in the filename did not match  kvm process, 
since I add option in ceph.conf for rbd admin socket, why not qemu create this 
admin socket, is this due to qemu is not installed correctly or this rbd admin 
socket depends on secified qemu package.

-----Original Message-----
From: Josh Durgin [mailto:josh.dur...@inktank.com]
Sent: Thursday, November 28, 2013 11:01 AM
To: Shu, Xinxin; ceph-us...@ceph.com
Subject: Re: [ceph-users] can not get rbd cache perf counter

On 11/27/2013 01:31 AM, Shu, Xinxin wrote:
Recently,  I want to test performance benefit of rbd cache, i cannot
get obvious performance benefit at my setup, then I  try to make sure
rbd cache is enabled, but I cannot get rbd cache perf counter. In
order to identify how to enable rbd cache perf counter, I setup a
simple setup(one client hosted vms, one ceph cluster with two OSDs,
each osd has a SSD partition for journal.), then build ceph-0.67.4.

My ceph.conf shows as bellows:

[global]

      debug default = 0

      log file = /var/log/ceph/$name.log

      max open files = 131072

      auth cluster required = none

      auth service required = none

      auth client required = none

      rbd cache = true

[mon.a]

      host = {monitor_host_name}

mon addr = {monitor_addr}

[osd.0]

      host = {osd.0_hostname}

      public addr = {public_addr}

      cluster addr = {cluster_addr}

      osd mkfs type = xfs

      devs = /dev/sdb1

      osd journal = /dev/sdd5

[osd.1]

      host = {osd.1_hostname}

      public addr = {public_addr}

      cluster addr = {cluster_addr}

      osd mkfs type = xfs

      devs = /dev/sdc1

      osd journal = /dev/sdd6

after ceph cluster is built, I create a rbd image with rbd create
-size
10240 -new-format test

then use virsh to start a vm, below is my vm xml file

<domain type='qemu'>

    <name>test</name>

    <memory unit='KiB'>524288</memory>

    <currentMemory unit='KiB'>524288</currentMemory>

    <vcpu placement='static'>1</vcpu>

    <os>

      <type arch='x86_64' machine='pc-1.2'>hvm</type>

      <boot dev='hd'/>

    </os>

    <features>

      <acpi/>

      <apic/>

    </features>

    <cpu mode='host-model'>

      <model fallback='allow'/>

    </cpu>

    <clock offset='utc'>

      <timer name='pit' tickpolicy='delay'/>

      <timer name='rtc' tickpolicy='catchup'/>

    </clock>

    <on_poweroff>destroy</on_poweroff>

    <on_reboot>restart</on_reboot>

    <on_crash>destroy</on_crash>

    <devices>

      <emulator>/usr/bin/qemu-system-x86_64</emulator>

      <disk type='file' device='disk'>

        <driver name='qemu' type='qcow2' cache='none'/>

        <source file='/root/disk'/>

        <target dev='vda' bus='virtio'/>

        <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x0'/>

      </disk>

       <disk type='network' device='disk'>

        <driver name='qemu' type='raw' cache='writeback'/>

        <source protocol='rbd'
name='rbd/test:rbd_cache=true:rbd_cache_writethrough_until_flush=true'
/>

        <target dev='vdb' bus='virtio'/>

        <address type='pci' domain='0x0000' bus='0x00' slot='0x06'
function='0x0'/>i

      </disk>

      <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'
keymap='en-us'>

        <listen type='address' address='0.0.0.0'/>

      </graphics>

    </devices>

</domain>

Then I add a rbd admin socket in ceph.conf on my client, below is the
config

[global]

      auth cluster required = none

      auth service required = none

      auth client required = none

      rbd cache = true

      rbd cache writethrough until flush = true

[client]

      admin socket=/var/run/ceph/rbd-$pid.asok

[mon.a]

      host = {monitor_host_name}

      mon addr = {monitor_host_addr}

then I checked rbd cache perf counter by this socket, but the output
did not get any rbd cache statistics

ceph --admin-daemon /var/run/ceph/rbd-3526.asok perf dump output

{ "objecter": { "op_active": 0,

        "op_laggy": 0,

        "op_send": 0,

        "op_send_bytes": 0,

        "op_resend": 0,

        "op_ack": 0,

        "op_commit": 0,

        "op": 0,

        "op_r": 0,

        "op_w": 0,

        "op_rmw": 0,

        "op_pg": 0,

        "osdop_stat": 0,

        "osdop_create": 0,

        "osdop_read": 0,

        "osdop_write": 0,

        "osdop_writefull": 0,

        "osdop_append": 0,

        "osdop_zero": 0,

        "osdop_truncate": 0,

        "osdop_delete": 0,

        "osdop_mapext": 0,

        "osdop_sparse_read": 0,

        "osdop_clonerange": 0,

        "osdop_getxattr": 0,

        "osdop_setxattr": 0,

        "osdop_cmpxattr": 0,

        "osdop_rmxattr": 0,

        "osdop_resetxattrs": 0,

        "osdop_tmap_up": 0,

        "osdop_tmap_put": 0,

        "osdop_tmap_get": 0,

        "osdop_call": 0,

        "osdop_watch": 0,

        "osdop_notify": 0,

        "osdop_src_cmpxattr": 0,

        "osdop_pgls": 0,

        "osdop_pgls_filter": 0,

        "osdop_other": 0,

        "linger_active": 0,

        "linger_send": 0,

        "linger_resend": 0,

        "poolop_active": 0,

        "poolop_send": 0,

        "poolop_resend": 0,

        "poolstat_active": 0,

        "poolstat_send": 0,

        "poolstat_resend": 0,

        "statfs_active": 0,

        "statfs_send": 0,

        "statfs_resend": 0,

        "command_active": 0,

        "command_send": 0,

        "command_resend": 0,

        "map_epoch": 0,

        "map_full": 0,

        "map_inc": 0,

        "osd_sessions": 0,

        "osd_session_open": 0,

        "osd_session_close": 0,

        "osd_laggy": 0},

    "throttle-msgr_dispatch_throttler-radosclient": { "val": 0,

        "max": 104857600,

        "get": 11,

        "get_sum": 5655,

        "get_or_fail_fail": 0,

        "get_or_fail_success": 0,

        "take": 0,

        "take_sum": 0,

        "put": 11,

        "put_sum": 5655,

        "wait": { "avgcount": 0,

            "sum": 0.000000000}},

    "throttle-objecter_bytes": { "val": 0,

        "max": 104857600,

        "get": 0,

        "get_sum": 0,

        "get_or_fail_fail": 0,

        "get_or_fail_success": 0,

        "take": 0,

        "take_sum": 0,

        "put": 0,

        "put_sum": 0,

        "wait": { "avgcount": 0,

            "sum": 0.000000000}},

    "throttle-objecter_ops": { "val": 0,

        "max": 1024,

        "get": 0,

        "get_sum": 0,

        "get_or_fail_fail": 0,

        "get_or_fail_success": 0,

        "take": 0,

        "take_sum": 0,

        "put": 0,

        "put_sum": 0,

        "wait": { "avgcount": 0,

            "sum": 0.000000000}}}

Qemu version:  qemu-system-x86_64 --version

QEMU emulator version 1.2.0 (qemu-kvm-1.2.0+noroms-0ubuntu2.12.10.5,
Debian), Copyright (c) 2003-2008 Fabrice Bellard

Can anybody help me, any hints will be appreciated ?

Perhaps you're connecting to the admin socket of another process? Does the pid 
in the filename match the pid of the qemu process?

Maybe qemu is not creating an admin socket because it does not have write 
access to /var/run/ceph?


_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

Reply via email to