Increase number of read and writes
Hi, I am using Ceph in developer mode. Currently I am implementing Librados examples which are also available in Introduction to Librados section https://docs.ceph.com/docs/master/rados/api/librados-intro/#step-3-creating-.... It says once your app has a cluster handle and a connection to a Ceph Storage Cluster, you may create an I/O Context and begin reading and writing data. For example, *err = rados_write(io, "hw", "Hello World!", 12, 0); if (err < 0) { fprintf(stderr, "%s: Cannot write object \"neo-obj\" to pool %s: %s\n", argv[0], poolname, strerror(-err)); rados_ioctx_destroy(io); rados_shutdown(cluster); exit(1); } else { printf("\nWrote \"Hello World\" to object \"neo-obj\".\n"); }* My question, Is "12" is the number of writes? Because I want to test the with high number of read and writes. Looking for help !
Den tors 23 apr. 2020 kl 16:07 skrev Bobby <italienisch1987@gmail.com>:
Hi,
I am using Ceph in developer mode. Currently I am implementing Librados examples which are also available in Introduction to Librados section
https://docs.ceph.com/docs/master/rados/api/librados-intro/#step-3-creating-... . It says once your app has a cluster handle and a connection to a Ceph Storage Cluster, you may create an I/O Context and begin reading and writing data. For example,
*err = rados_write(io, "hw", "Hello World!", 12, 0);
My question, Is "12" is the number of writes? Because I want to test the with high number of read and writes.
Looking for help !
Just check what parameters the function takes: CEPH_RADOS_API <https://docs.ceph.com/docs/master/rados/api/librados/#c.CEPH_RADOS_API> int rados_write(rados_ioctx_t <https://docs.ceph.com/docs/master/rados/api/librados/#c.rados_ioctx_t>* io*, const char ** oid*, const char ** buf*, size_t* len*, uint64_t* off*)¶ <https://docs.ceph.com/docs/master/rados/api/librados/#c.rados_write> Write *len* bytes from *buf* into the *oid* object, starting at offset *off*. The value of *len* must be <= UINT_MAX/2. The 12 seems to be the lenght of "Hello World!" in bytes, which matches what a normal write() call would need. In order to test high number of writes, you need to send lots of write calls in parallel. (Or just get fio with rbd support compiled in, this is a solved problem already how to benchmark ceph at a low level) -- May the most significant bit of your life be positive.
Hi Janne, Thanks a lot ! I should have checked it earlier..I got it :-) Basically I would like to compile the client read and write C/C++ codes and then later profile the executables with valgrind and other profiling tools. The reason being I want to see the function calls, execution time etc. This is very easy with the given Librados example. I am already doing the profiling of executables. What you have pointed out rearding *fio*, this is exactly my next goal (you read my mind). Given where I am at the moment (a Ceph deployment cluster) and given what I want to achieve (profile the executables of the read write test codes with high number of read and writes), how can I bring *fio* in it? May be there are already some Ceph test codes with high number of write and read calls in parallel? I have come across this one example *librbd* test code in Ceph repository ( https://github.com/ceph/ceph/blob/master/examples/librbd/hello_world.cc ) .......... On Thu, Apr 23, 2020 at 4:16 PM Janne Johansson <icepic.dz@gmail.com> wrote:
Den tors 23 apr. 2020 kl 16:07 skrev Bobby <italienisch1987@gmail.com>:
Hi,
I am using Ceph in developer mode. Currently I am implementing Librados examples which are also available in Introduction to Librados section
https://docs.ceph.com/docs/master/rados/api/librados-intro/#step-3-creating-... . It says once your app has a cluster handle and a connection to a Ceph Storage Cluster, you may create an I/O Context and begin reading and writing data. For example,
*err = rados_write(io, "hw", "Hello World!", 12, 0);
My question, Is "12" is the number of writes? Because I want to test the with high number of read and writes.
Looking for help !
Just check what parameters the function takes: CEPH_RADOS_API <https://docs.ceph.com/docs/master/rados/api/librados/#c.CEPH_RADOS_API> int rados_write(rados_ioctx_t <https://docs.ceph.com/docs/master/rados/api/librados/#c.rados_ioctx_t> * io*, const char ** oid*, const char ** buf*, size_t* len*, uint64_t * off*)¶ <https://docs.ceph.com/docs/master/rados/api/librados/#c.rados_write>
Write *len* bytes from *buf* into the *oid* object, starting at offset *off*. The value of *len* must be <= UINT_MAX/2.
The 12 seems to be the lenght of "Hello World!" in bytes, which matches what a normal write() call would need. In order to test high number of writes, you need to send lots of write calls in parallel.
(Or just get fio with rbd support compiled in, this is a solved problem already how to benchmark ceph at a low level)
-- May the most significant bit of your life be positive.
participants (2)
-
Bobby
-
Janne Johansson