* civetweb threads
@ 2014-11-15 7:28 Mustafa Muhammad
2014-11-15 11:55 ` Mustafa Muhammad
0 siblings, 1 reply; 13+ messages in thread
From: Mustafa Muhammad @ 2014-11-15 7:28 UTC (permalink / raw)
To: ceph-devel
Hi,
I am using civetweb in my radosgw, if I use "rgw thread pool size"
that is more than 1024, civetweb doesn't work.
e.g.
rgw thread pool size = 1024
rgw frontends = "civetweb port=80"
#ps aux -L | grep rados | wc -l
1096
everything works fine
If I use:
rgw thread pool size = 1025
rgw frontends = "civetweb port=80"
# ps aux -L | grep rados | wc -l
43
And http server is not listening.
If I don't use civetweb:
rgw thread pool size = 10240
# ps aux -L | grep rados | wc -l
10278
Regards
Mustafa Muhammad
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-11-15 7:28 civetweb threads Mustafa Muhammad
@ 2014-11-15 11:55 ` Mustafa Muhammad
2014-11-15 16:18 ` Yehuda Sadeh
0 siblings, 1 reply; 13+ messages in thread
From: Mustafa Muhammad @ 2014-11-15 11:55 UTC (permalink / raw)
To: ceph-devel
On Sat, Nov 15, 2014 at 10:28 AM, Mustafa Muhammad
<mustafaa.alhamdaani@gmail.com> wrote:
> Hi,
> I am using civetweb in my radosgw, if I use "rgw thread pool size"
> that is more than 1024, civetweb doesn't work.
> e.g.
> rgw thread pool size = 1024
> rgw frontends = "civetweb port=80"
>
> #ps aux -L | grep rados | wc -l
> 1096
>
> everything works fine
>
>
> If I use:
> rgw thread pool size = 1025
> rgw frontends = "civetweb port=80"
>
> # ps aux -L | grep rados | wc -l
> 43
>
> And http server is not listening.
>
> If I don't use civetweb:
> rgw thread pool size = 10240
>
> # ps aux -L | grep rados | wc -l
> 10278
>
> Regards
>
> Mustafa Muhammad
I found the problem, it is hardcoded here:
https://github.com/ceph/civetweb/blob/master/src/civetweb.c
as:
#define MAX_WORKER_THREADS 1024
I increased it to 20480 an compiled from source, problem solved.
I should we make a patch, right?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-11-15 11:55 ` Mustafa Muhammad
@ 2014-11-15 16:18 ` Yehuda Sadeh
2014-11-16 4:57 ` pushpesh sharma
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Yehuda Sadeh @ 2014-11-15 16:18 UTC (permalink / raw)
To: Mustafa Muhammad; +Cc: ceph-devel
On Sat, Nov 15, 2014 at 3:55 AM, Mustafa Muhammad
<mustafaa.alhamdaani@gmail.com> wrote:
> On Sat, Nov 15, 2014 at 10:28 AM, Mustafa Muhammad
> <mustafaa.alhamdaani@gmail.com> wrote:
>> Hi,
>> I am using civetweb in my radosgw, if I use "rgw thread pool size"
>> that is more than 1024, civetweb doesn't work.
>> e.g.
>> rgw thread pool size = 1024
>> rgw frontends = "civetweb port=80"
>>
>> #ps aux -L | grep rados | wc -l
>> 1096
>>
>> everything works fine
>>
>>
>> If I use:
>> rgw thread pool size = 1025
>> rgw frontends = "civetweb port=80"
>>
>> # ps aux -L | grep rados | wc -l
>> 43
>>
>> And http server is not listening.
>>
>> If I don't use civetweb:
>> rgw thread pool size = 10240
>>
>> # ps aux -L | grep rados | wc -l
>> 10278
>>
>> Regards
>>
>> Mustafa Muhammad
>
> I found the problem, it is hardcoded here:
> https://github.com/ceph/civetweb/blob/master/src/civetweb.c
> as:
> #define MAX_WORKER_THREADS 1024
>
> I increased it to 20480 an compiled from source, problem solved.
> I should we make a patch, right?
Please do, preferably a github pull request. Also, if you could open a
ceph tracker issue with the specific would be great.
Thanks,
Yehuda
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-11-15 16:18 ` Yehuda Sadeh
@ 2014-11-16 4:57 ` pushpesh sharma
2014-11-16 5:50 ` Yehuda Sadeh
2014-11-16 11:03 ` Mustafa Muhammad
2014-11-16 10:51 ` Mustafa Muhammad
2014-11-27 17:35 ` Mustafa Muhammad
2 siblings, 2 replies; 13+ messages in thread
From: pushpesh sharma @ 2014-11-16 4:57 UTC (permalink / raw)
To: Yehuda Sadeh; +Cc: Mustafa Muhammad, ceph-devel
Yehuda,
I believe it would not be wise to increase the value of this
parameter; till the underlying threading model of RGW is fixed.
I tried with various 'rgw_thread_pool_size' (128,256,512,1024), and
didn't observe any better throughput , instead response time
increased. Which means RGW is not able to handled increased
concurrency.
I have another observation regarding 'rgw_max _chunk_size'. I was
doing some experiment with this parameter. I have seen the following
behavior on a test deployment and then verified on development
environment :-
1. Based on the value we set for 'rgw_max_chunk_size', every Swift
object gets sliced in to equal sized chunks and each chunk got created
as a RAODS Object in the pool (.rgw.buckets)
2. While reading the same Swift Object, sum of all RADOS objects provided.
3. However setting this 'rgw_max_chunk_size' value up to 4MB only
works after which GET request will fail and only the first RADOS
object will be returned.
#######################
$./ceph --admin-daemon out/client.admin.9660.asok config set
rgw_max_chunk_size 4195000
*** DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH ***
{ "success": "rgw_max_chunk_size = '4195000' "}
swift -A http://localhost:8000/auth -U tester:testing -K asdf upload
my4+MB_chunked ceph-0.85.tar.gz
ceph-0.85.tar.gz
ceph@Ubuntu14:~$ cd copy/
ceph@Ubuntu14:~/copy$ swift -A http://localhost:8000/auth -U
tester:testing -K asdf download my4+MB_chunked ceph-0.85.tar.gz
ceph-0.85.tar.gz: md5sum != etag, ea27d35584bae391e9f3e67c86849a66 !=
fd9237fa01803398bd8012c4d59975d8
ceph-0.85.tar.gz [auth 0.021s, headers 0.040s, total 30.045s, 0.140 MB/s]
ceph-0.85.tar.gz: read_length != content_length, 4194304 != 7384934
######################
Is this behavior sane? Why the Swift Object is chunked by default
based on this value. Should the decision to chunk the object be coming
from end-user? (Like Native Swift)
On Sat, Nov 15, 2014 at 9:48 PM, Yehuda Sadeh <yehuda@redhat.com> wrote:
> On Sat, Nov 15, 2014 at 3:55 AM, Mustafa Muhammad
> <mustafaa.alhamdaani@gmail.com> wrote:
>> On Sat, Nov 15, 2014 at 10:28 AM, Mustafa Muhammad
>> <mustafaa.alhamdaani@gmail.com> wrote:
>>> Hi,
>>> I am using civetweb in my radosgw, if I use "rgw thread pool size"
>>> that is more than 1024, civetweb doesn't work.
>>> e.g.
>>> rgw thread pool size = 1024
>>> rgw frontends = "civetweb port=80"
>>>
>>> #ps aux -L | grep rados | wc -l
>>> 1096
>>>
>>> everything works fine
>>>
>>>
>>> If I use:
>>> rgw thread pool size = 1025
>>> rgw frontends = "civetweb port=80"
>>>
>>> # ps aux -L | grep rados | wc -l
>>> 43
>>>
>>> And http server is not listening.
>>>
>>> If I don't use civetweb:
>>> rgw thread pool size = 10240
>>>
>>> # ps aux -L | grep rados | wc -l
>>> 10278
>>>
>>> Regards
>>>
>>> Mustafa Muhammad
>>
>> I found the problem, it is hardcoded here:
>> https://github.com/ceph/civetweb/blob/master/src/civetweb.c
>> as:
>> #define MAX_WORKER_THREADS 1024
>>
>> I increased it to 20480 an compiled from source, problem solved.
>> I should we make a patch, right?
>
> Please do, preferably a github pull request. Also, if you could open a
> ceph tracker issue with the specific would be great.
>
> Thanks,
> Yehuda
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
-Pushpesh
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-11-16 4:57 ` pushpesh sharma
@ 2014-11-16 5:50 ` Yehuda Sadeh
2014-11-16 11:03 ` Mustafa Muhammad
1 sibling, 0 replies; 13+ messages in thread
From: Yehuda Sadeh @ 2014-11-16 5:50 UTC (permalink / raw)
To: pushpesh sharma; +Cc: Mustafa Muhammad, ceph-devel
On Sat, Nov 15, 2014 at 8:57 PM, pushpesh sharma <pushpesh.eck@gmail.com> wrote:
> Yehuda,
>
> I believe it would not be wise to increase the value of this
> parameter; till the underlying threading model of RGW is fixed.
> I tried with various 'rgw_thread_pool_size' (128,256,512,1024), and
> didn't observe any better throughput , instead response time
> increased. Which means RGW is not able to handled increased
> concurrency.
>
> I have another observation regarding 'rgw_max _chunk_size'. I was
> doing some experiment with this parameter. I have seen the following
> behavior on a test deployment and then verified on development
> environment :-
>
> 1. Based on the value we set for 'rgw_max_chunk_size', every Swift
> object gets sliced in to equal sized chunks and each chunk got created
> as a RAODS Object in the pool (.rgw.buckets)
>
> 2. While reading the same Swift Object, sum of all RADOS objects provided.
>
> 3. However setting this 'rgw_max_chunk_size' value up to 4MB only
> works after which GET request will fail and only the first RADOS
> object will be returned.
>
> #######################
> $./ceph --admin-daemon out/client.admin.9660.asok config set
> rgw_max_chunk_size 4195000
> *** DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH ***
> { "success": "rgw_max_chunk_size = '4195000' "}
>
>
> swift -A http://localhost:8000/auth -U tester:testing -K asdf upload
> my4+MB_chunked ceph-0.85.tar.gz
> ceph-0.85.tar.gz
> ceph@Ubuntu14:~$ cd copy/
> ceph@Ubuntu14:~/copy$ swift -A http://localhost:8000/auth -U
> tester:testing -K asdf download my4+MB_chunked ceph-0.85.tar.gz
> ceph-0.85.tar.gz: md5sum != etag, ea27d35584bae391e9f3e67c86849a66 !=
> fd9237fa01803398bd8012c4d59975d8
> ceph-0.85.tar.gz [auth 0.021s, headers 0.040s, total 30.045s, 0.140 MB/s]
> ceph-0.85.tar.gz: read_length != content_length, 4194304 != 7384934
> ######################
>
> Is this behavior sane? Why the Swift Object is chunked by default
I need to see the logs for it to maybe determine what was going on.
There's another param that limits max request size
(rgw_get_obj_max_req_size), so you probably hit this one. Note that
it's not advisable to have the chunk size too big.
> based on this value. Should the decision to chunk the object be coming
> from end-user? (Like Native Swift)
Does native swift even support striping? Not having striping or having
variable stripe sizes could have severe impact on data balancing.
Also, the gateway insures atomicity of certain operations by limiting
the object head's size.
Yehuda
>
> On Sat, Nov 15, 2014 at 9:48 PM, Yehuda Sadeh <yehuda@redhat.com> wrote:
>> On Sat, Nov 15, 2014 at 3:55 AM, Mustafa Muhammad
>> <mustafaa.alhamdaani@gmail.com> wrote:
>>> On Sat, Nov 15, 2014 at 10:28 AM, Mustafa Muhammad
>>> <mustafaa.alhamdaani@gmail.com> wrote:
>>>> Hi,
>>>> I am using civetweb in my radosgw, if I use "rgw thread pool size"
>>>> that is more than 1024, civetweb doesn't work.
>>>> e.g.
>>>> rgw thread pool size = 1024
>>>> rgw frontends = "civetweb port=80"
>>>>
>>>> #ps aux -L | grep rados | wc -l
>>>> 1096
>>>>
>>>> everything works fine
>>>>
>>>>
>>>> If I use:
>>>> rgw thread pool size = 1025
>>>> rgw frontends = "civetweb port=80"
>>>>
>>>> # ps aux -L | grep rados | wc -l
>>>> 43
>>>>
>>>> And http server is not listening.
>>>>
>>>> If I don't use civetweb:
>>>> rgw thread pool size = 10240
>>>>
>>>> # ps aux -L | grep rados | wc -l
>>>> 10278
>>>>
>>>> Regards
>>>>
>>>> Mustafa Muhammad
>>>
>>> I found the problem, it is hardcoded here:
>>> https://github.com/ceph/civetweb/blob/master/src/civetweb.c
>>> as:
>>> #define MAX_WORKER_THREADS 1024
>>>
>>> I increased it to 20480 an compiled from source, problem solved.
>>> I should we make a patch, right?
>>
>> Please do, preferably a github pull request. Also, if you could open a
>> ceph tracker issue with the specific would be great.
>>
>> Thanks,
>> Yehuda
>> --
>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
>
> --
> -Pushpesh
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-11-15 16:18 ` Yehuda Sadeh
2014-11-16 4:57 ` pushpesh sharma
@ 2014-11-16 10:51 ` Mustafa Muhammad
2014-11-16 17:11 ` Yehuda Sadeh
2014-11-27 17:35 ` Mustafa Muhammad
2 siblings, 1 reply; 13+ messages in thread
From: Mustafa Muhammad @ 2014-11-16 10:51 UTC (permalink / raw)
To: ceph-devel
On Sat, Nov 15, 2014 at 7:18 PM, Yehuda Sadeh <yehuda@redhat.com> wrote:
> On Sat, Nov 15, 2014 at 3:55 AM, Mustafa Muhammad
> <mustafaa.alhamdaani@gmail.com> wrote:
>> On Sat, Nov 15, 2014 at 10:28 AM, Mustafa Muhammad
>> <mustafaa.alhamdaani@gmail.com> wrote:
>>> Hi,
>>> I am using civetweb in my radosgw, if I use "rgw thread pool size"
>>> that is more than 1024, civetweb doesn't work.
>>> e.g.
>>> rgw thread pool size = 1024
>>> rgw frontends = "civetweb port=80"
>>>
>>> #ps aux -L | grep rados | wc -l
>>> 1096
>>>
>>> everything works fine
>>>
>>>
>>> If I use:
>>> rgw thread pool size = 1025
>>> rgw frontends = "civetweb port=80"
>>>
>>> # ps aux -L | grep rados | wc -l
>>> 43
>>>
>>> And http server is not listening.
>>>
>>> If I don't use civetweb:
>>> rgw thread pool size = 10240
>>>
>>> # ps aux -L | grep rados | wc -l
>>> 10278
>>>
>>> Regards
>>>
>>> Mustafa Muhammad
>>
>> I found the problem, it is hardcoded here:
>> https://github.com/ceph/civetweb/blob/master/src/civetweb.c
>> as:
>> #define MAX_WORKER_THREADS 1024
>>
>> I increased it to 20480 an compiled from source, problem solved.
>> I should we make a patch, right?
>
> Please do, preferably a github pull request. Also, if you could open a
> ceph tracker issue with the specific would be great.
I wanted to do create a github pull request with this value set to
20480, but thought I should ask if you want it to be hardcoded, I
understood that 'rgw_thread_pool_size' maps to 'num_op_thread' in
civetweb, is there a hardcoded max for rgw_thread_pool_size so I can
set the same for MAX_WORKER_THREADS? What do you suggest?
Regards
Mustafa
>
> Thanks,
> Yehuda
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-11-16 4:57 ` pushpesh sharma
2014-11-16 5:50 ` Yehuda Sadeh
@ 2014-11-16 11:03 ` Mustafa Muhammad
[not found] ` <CAMc8nAXhouvyvVcFHs2mARzkR6-u9TWV-wxgca_zOeSGoa59cg@mail.gmail.com>
1 sibling, 1 reply; 13+ messages in thread
From: Mustafa Muhammad @ 2014-11-16 11:03 UTC (permalink / raw)
To: ceph-devel
On Sun, Nov 16, 2014 at 7:57 AM, pushpesh sharma <pushpesh.eck@gmail.com> wrote:
> Yehuda,
>
> I believe it would not be wise to increase the value of this
> parameter; till the underlying threading model of RGW is fixed.
> I tried with various 'rgw_thread_pool_size' (128,256,512,1024), and
> didn't observe any better throughput , instead response time
> increased. Which means RGW is not able to handled increased
> concurrency.
I needed to increase this number to increase the number of concurrent
connections to civetweb, I need high number of threads (>7000
connections, large files)
I had my throughput going from 200 MB/s to 1200 MB/s (10G interface is
full, I could've gone higher) due to increasing civetweb connections.
> I have another observation regarding 'rgw_max _chunk_size'. I was
> doing some experiment with this parameter. I have seen the following
> behavior on a test deployment and then verified on development
> environment :-
>
> 1. Based on the value we set for 'rgw_max_chunk_size', every Swift
> object gets sliced in to equal sized chunks and each chunk got created
> as a RAODS Object in the pool (.rgw.buckets)
>
> 2. While reading the same Swift Object, sum of all RADOS objects provided.
>
> 3. However setting this 'rgw_max_chunk_size' value up to 4MB only
> works after which GET request will fail and only the first RADOS
> object will be returned.
>
> #######################
> $./ceph --admin-daemon out/client.admin.9660.asok config set
> rgw_max_chunk_size 4195000
> *** DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH ***
> { "success": "rgw_max_chunk_size = '4195000' "}
>
>
> swift -A http://localhost:8000/auth -U tester:testing -K asdf upload
> my4+MB_chunked ceph-0.85.tar.gz
> ceph-0.85.tar.gz
> ceph@Ubuntu14:~$ cd copy/
> ceph@Ubuntu14:~/copy$ swift -A http://localhost:8000/auth -U
> tester:testing -K asdf download my4+MB_chunked ceph-0.85.tar.gz
> ceph-0.85.tar.gz: md5sum != etag, ea27d35584bae391e9f3e67c86849a66 !=
> fd9237fa01803398bd8012c4d59975d8
> ceph-0.85.tar.gz [auth 0.021s, headers 0.040s, total 30.045s, 0.140 MB/s]
> ceph-0.85.tar.gz: read_length != content_length, 4194304 != 7384934
> ######################
>
> Is this behavior sane? Why the Swift Object is chunked by default
> based on this value. Should the decision to chunk the object be coming
> from end-user? (Like Native Swift)
>
> On Sat, Nov 15, 2014 at 9:48 PM, Yehuda Sadeh <yehuda@redhat.com> wrote:
>> On Sat, Nov 15, 2014 at 3:55 AM, Mustafa Muhammad
>> <mustafaa.alhamdaani@gmail.com> wrote:
>>> On Sat, Nov 15, 2014 at 10:28 AM, Mustafa Muhammad
>>> <mustafaa.alhamdaani@gmail.com> wrote:
>>>> Hi,
>>>> I am using civetweb in my radosgw, if I use "rgw thread pool size"
>>>> that is more than 1024, civetweb doesn't work.
>>>> e.g.
>>>> rgw thread pool size = 1024
>>>> rgw frontends = "civetweb port=80"
>>>>
>>>> #ps aux -L | grep rados | wc -l
>>>> 1096
>>>>
>>>> everything works fine
>>>>
>>>>
>>>> If I use:
>>>> rgw thread pool size = 1025
>>>> rgw frontends = "civetweb port=80"
>>>>
>>>> # ps aux -L | grep rados | wc -l
>>>> 43
>>>>
>>>> And http server is not listening.
>>>>
>>>> If I don't use civetweb:
>>>> rgw thread pool size = 10240
>>>>
>>>> # ps aux -L | grep rados | wc -l
>>>> 10278
>>>>
>>>> Regards
>>>>
>>>> Mustafa Muhammad
>>>
>>> I found the problem, it is hardcoded here:
>>> https://github.com/ceph/civetweb/blob/master/src/civetweb.c
>>> as:
>>> #define MAX_WORKER_THREADS 1024
>>>
>>> I increased it to 20480 an compiled from source, problem solved.
>>> I should we make a patch, right?
>>
>> Please do, preferably a github pull request. Also, if you could open a
>> ceph tracker issue with the specific would be great.
>>
>> Thanks,
>> Yehuda
>> --
>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
>
> --
> -Pushpesh
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-11-16 10:51 ` Mustafa Muhammad
@ 2014-11-16 17:11 ` Yehuda Sadeh
2014-11-17 12:09 ` pushpesh sharma
0 siblings, 1 reply; 13+ messages in thread
From: Yehuda Sadeh @ 2014-11-16 17:11 UTC (permalink / raw)
To: Mustafa Muhammad; +Cc: ceph-devel
On Sun, Nov 16, 2014 at 2:51 AM, Mustafa Muhammad
<mustafaa.alhamdaani@gmail.com> wrote:
> On Sat, Nov 15, 2014 at 7:18 PM, Yehuda Sadeh <yehuda@redhat.com> wrote:
>> On Sat, Nov 15, 2014 at 3:55 AM, Mustafa Muhammad
>> <mustafaa.alhamdaani@gmail.com> wrote:
>>> On Sat, Nov 15, 2014 at 10:28 AM, Mustafa Muhammad
>>> <mustafaa.alhamdaani@gmail.com> wrote:
>>>> Hi,
>>>> I am using civetweb in my radosgw, if I use "rgw thread pool size"
>>>> that is more than 1024, civetweb doesn't work.
>>>> e.g.
>>>> rgw thread pool size = 1024
>>>> rgw frontends = "civetweb port=80"
>>>>
>>>> #ps aux -L | grep rados | wc -l
>>>> 1096
>>>>
>>>> everything works fine
>>>>
>>>>
>>>> If I use:
>>>> rgw thread pool size = 1025
>>>> rgw frontends = "civetweb port=80"
>>>>
>>>> # ps aux -L | grep rados | wc -l
>>>> 43
>>>>
>>>> And http server is not listening.
>>>>
>>>> If I don't use civetweb:
>>>> rgw thread pool size = 10240
>>>>
>>>> # ps aux -L | grep rados | wc -l
>>>> 10278
>>>>
>>>> Regards
>>>>
>>>> Mustafa Muhammad
>>>
>>> I found the problem, it is hardcoded here:
>>> https://github.com/ceph/civetweb/blob/master/src/civetweb.c
>>> as:
>>> #define MAX_WORKER_THREADS 1024
>>>
>>> I increased it to 20480 an compiled from source, problem solved.
>>> I should we make a patch, right?
>>
>> Please do, preferably a github pull request. Also, if you could open a
>> ceph tracker issue with the specific would be great.
>
> I wanted to do create a github pull request with this value set to
> 20480, but thought I should ask if you want it to be hardcoded, I
> understood that 'rgw_thread_pool_size' maps to 'num_op_thread' in
> civetweb, is there a hardcoded max for rgw_thread_pool_size so I can
> set the same for MAX_WORKER_THREADS? What do you suggest?
I don't think there's a hard coded max for the rgw thread pool size. A
configurable setting would be nicer, but I'm not really tied into it,
depending on what are the ramifications. Whichever route you're taking
it'd be nice to get it upstream to civetweb, so it needs to make sense
in that context.
Yehuda
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-11-16 17:11 ` Yehuda Sadeh
@ 2014-11-17 12:09 ` pushpesh sharma
0 siblings, 0 replies; 13+ messages in thread
From: pushpesh sharma @ 2014-11-17 12:09 UTC (permalink / raw)
To: Yehuda Sadeh; +Cc: Mustafa Muhammad, ceph-devel
Mustafa,
I am not positive about the results you posted here(200MB/s ==>
1200MB/s, by just increasing number of 'rgw_thread_pool_size'). These
are results I observed on my setup:
1. Workload : 100% Read, Object_size=1MB, ClientWorkers: 512,
rgw_object_chunk_size= 1048576, rgw_thread_pool_size=128
General Report
Op-Type Op-Count Byte-Count Avg-ResTime Avg-ProTime
Throughput Bandwidth Succ-Ratio
Read 515.99 kops 515.99 GB 74.37 ms 72.2 ms
1721.04 op/s 1.72 GB/S 99.33%
ResTime (RT) Details
Op-Type 60%-RT 80%-RT 90%-RT 95%-RT 99%-RT 100%-RT
read < 30 ms < 80 ms < 200 ms < 290 ms
< 670 ms < 6,530 ms
2. Workload : 100% Read, Object_size=1MB, ClientWorkers: 512,
rgw_object_chunk_size= 1048576, rgw_thread_pool_size=512
General Report
Op-Type Op-Count Byte-Count Avg-ResTime
Avg-ProcTime Throughput Bandwidth Succ-Ratio
read 521.21 kops 521.21 GB 294.17 ms
291.7 ms 1740.46 op/s 1.74 GB/S 100%
ResTime (RT) Details
Op-Type 60%-RT 80%-RT 90%-RT 95%-RT 99%-RT 100%-RT
read < 280 ms < 360 ms < 450 ms < 570 ms <1,040 ms
<3,790 ms
You can checkout more setup details
http://pushpeshsharma.blogspot.in/2014/11/openstack-swift-vs-ceph-rgw-read.html
.
It is certainly possible I am missing some other configs, please
enlighten me.
On Sun, Nov 16, 2014 at 10:41 PM, Yehuda Sadeh <yehuda@redhat.com> wrote:
> On Sun, Nov 16, 2014 at 2:51 AM, Mustafa Muhammad
> <mustafaa.alhamdaani@gmail.com> wrote:
>> On Sat, Nov 15, 2014 at 7:18 PM, Yehuda Sadeh <yehuda@redhat.com> wrote:
>>> On Sat, Nov 15, 2014 at 3:55 AM, Mustafa Muhammad
>>> <mustafaa.alhamdaani@gmail.com> wrote:
>>>> On Sat, Nov 15, 2014 at 10:28 AM, Mustafa Muhammad
>>>> <mustafaa.alhamdaani@gmail.com> wrote:
>>>>> Hi,
>>>>> I am using civetweb in my radosgw, if I use "rgw thread pool size"
>>>>> that is more than 1024, civetweb doesn't work.
>>>>> e.g.
>>>>> rgw thread pool size = 1024
>>>>> rgw frontends = "civetweb port=80"
>>>>>
>>>>> #ps aux -L | grep rados | wc -l
>>>>> 1096
>>>>>
>>>>> everything works fine
>>>>>
>>>>>
>>>>> If I use:
>>>>> rgw thread pool size = 1025
>>>>> rgw frontends = "civetweb port=80"
>>>>>
>>>>> # ps aux -L | grep rados | wc -l
>>>>> 43
>>>>>
>>>>> And http server is not listening.
>>>>>
>>>>> If I don't use civetweb:
>>>>> rgw thread pool size = 10240
>>>>>
>>>>> # ps aux -L | grep rados | wc -l
>>>>> 10278
>>>>>
>>>>> Regards
>>>>>
>>>>> Mustafa Muhammad
>>>>
>>>> I found the problem, it is hardcoded here:
>>>> https://github.com/ceph/civetweb/blob/master/src/civetweb.c
>>>> as:
>>>> #define MAX_WORKER_THREADS 1024
>>>>
>>>> I increased it to 20480 an compiled from source, problem solved.
>>>> I should we make a patch, right?
>>>
>>> Please do, preferably a github pull request. Also, if you could open a
>>> ceph tracker issue with the specific would be great.
>>
>> I wanted to do create a github pull request with this value set to
>> 20480, but thought I should ask if you want it to be hardcoded, I
>> understood that 'rgw_thread_pool_size' maps to 'num_op_thread' in
>> civetweb, is there a hardcoded max for rgw_thread_pool_size so I can
>> set the same for MAX_WORKER_THREADS? What do you suggest?
>
> I don't think there's a hard coded max for the rgw thread pool size. A
> configurable setting would be nicer, but I'm not really tied into it,
> depending on what are the ramifications. Whichever route you're taking
> it'd be nice to get it upstream to civetweb, so it needs to make sense
> in that context.
>
> Yehuda
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
-Pushpesh
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
[not found] ` <CAMc8nAXhouvyvVcFHs2mARzkR6-u9TWV-wxgca_zOeSGoa59cg@mail.gmail.com>
@ 2014-11-17 12:46 ` Mustafa Muhammad
0 siblings, 0 replies; 13+ messages in thread
From: Mustafa Muhammad @ 2014-11-17 12:46 UTC (permalink / raw)
To: ceph-devel
On Mon, Nov 17, 2014 at 3:03 PM, pushpesh sharma <pushpesh.eck@gmail.com> wrote:
> Mustafa,
>
> I am not positive about the results you posted here(200MB/s ==> 1200MB/s, by
> just increasing number of 'rgw_thread_pool_size'). These are results I
> observed on my setup:
>
> 1. Workload : 100% Read, Object_size=1MB, ClientWorkers: 512,
> rgw_object_chunk_size= 1048576, rgw_thread_pool_size=128
>
> General Report
>
> Op-Type Op-Count Byte-Count Avg-Res TimeAvg-Proc
> TimeThroughput Bandwidth Succ-Ratio
> Read 515.99 kops 515.99 GB 74.37 ms 72.2 ms 1721.04 op/s 1.72 GB/S
> 99.33%
>
> ResTime (RT) Details
> Op-Type 60%-RT 80%-RT 90%-RT 95%-RT 99%-RT 100%-RT
> read < 30 ms < 80 ms < 200 ms < 290 ms < 670 ms < 6,530 ms
>
>
> 2. Workload : 100% Read, Object_size=1MB, ClientWorkers: 512,
> rgw_object_chunk_size= 1048576, rgw_thread_pool_size=512
>
> General Report
>
> Op-Type Op-Count Byte-Count Avg-Res TimeAvg-Proc
> TimeThroughput Bandwidth Succ-Ratio
> read 521.21 kops 521.21 GB 294.17 ms 291.7 ms 1740.46 op/s 1.74
> GB/S 100%
>
>
> ResTime (RT) Details
> Op-Type 60%-RT 80%-RT 90%-RT 95%-RT 99%-RT
> 100%-RT
> read < 280 ms < 360 ms < 450 ms < 570 ms <1,040 ms
> <3,790 ms
>
>
> You can checkout more setup details here . It is certainly possible I am
> missing some other configs, please enlighten me.
>
In my case, I have a very large files (multiple gigs), I have a very
large number of connections, so I hit the "MAX_WORKER_THREADS" that is
1024 in civetweb code, so increasing the "rgw thread pool size" for me
was to increase "num_op_thread" to handle more than 1024 connection, I
could handle more than 7000 connections and I got the 1200 MB/s
In your blog, you said you used civetweb in default configuration
"‘num_op_thread’, which is set to 128", but the number is mapped from
rgw_thread_pool_size, so when you have more clients, they will wait.
Regards
Mustafa
>
> On Sun, Nov 16, 2014 at 4:33 PM, Mustafa Muhammad
> <mustafaa.alhamdaani@gmail.com> wrote:
>> On Sun, Nov 16, 2014 at 7:57 AM, pushpesh sharma <pushpesh.eck@gmail.com>
>> wrote:
>>> Yehuda,
>>>
>>> I believe it would not be wise to increase the value of this
>>> parameter; till the underlying threading model of RGW is fixed.
>>> I tried with various 'rgw_thread_pool_size' (128,256,512,1024), and
>>> didn't observe any better throughput , instead response time
>>> increased. Which means RGW is not able to handled increased
>>> concurrency.
>> I needed to increase this number to increase the number of concurrent
>> connections to civetweb, I need high number of threads (>7000
>> connections, large files)
>> I had my throughput going from 200 MB/s to 1200 MB/s (10G interface is
>> full, I could've gone higher) due to increasing civetweb connections.
>>
>>> I have another observation regarding 'rgw_max _chunk_size'. I was
>>> doing some experiment with this parameter. I have seen the following
>>> behavior on a test deployment and then verified on development
>>> environment :-
>>>
>>> 1. Based on the value we set for 'rgw_max_chunk_size', every Swift
>>> object gets sliced in to equal sized chunks and each chunk got created
>>> as a RAODS Object in the pool (.rgw.buckets)
>>>
>>> 2. While reading the same Swift Object, sum of all RADOS objects
>>> provided.
>>>
>>> 3. However setting this 'rgw_max_chunk_size' value up to 4MB only
>>> works after which GET request will fail and only the first RADOS
>>> object will be returned.
>>>
>>> #######################
>>> $./ceph --admin-daemon out/client.admin.9660.asok config set
>>> rgw_max_chunk_size 4195000
>>> *** DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH ***
>>> { "success": "rgw_max_chunk_size = '4195000' "}
>>>
>>>
>>> swift -A http://localhost:8000/auth -U tester:testing -K asdf upload
>>> my4+MB_chunked ceph-0.85.tar.gz
>>> ceph-0.85.tar.gz
>>> ceph@Ubuntu14:~$ cd copy/
>>> ceph@Ubuntu14:~/copy$ swift -A http://localhost:8000/auth -U
>>> tester:testing -K asdf download my4+MB_chunked ceph-0.85.tar.gz
>>> ceph-0.85.tar.gz: md5sum != etag, ea27d35584bae391e9f3e67c86849a66 !=
>>> fd9237fa01803398bd8012c4d59975d8
>>> ceph-0.85.tar.gz [auth 0.021s, headers 0.040s, total 30.045s, 0.140 MB/s]
>>> ceph-0.85.tar.gz: read_length != content_length, 4194304 != 7384934
>>> ######################
>>>
>>> Is this behavior sane? Why the Swift Object is chunked by default
>>> based on this value. Should the decision to chunk the object be coming
>>> from end-user? (Like Native Swift)
>>>
>>> On Sat, Nov 15, 2014 at 9:48 PM, Yehuda Sadeh <yehuda@redhat.com> wrote:
>>>> On Sat, Nov 15, 2014 at 3:55 AM, Mustafa Muhammad
>>>> <mustafaa.alhamdaani@gmail.com> wrote:
>>>>> On Sat, Nov 15, 2014 at 10:28 AM, Mustafa Muhammad
>>>>> <mustafaa.alhamdaani@gmail.com> wrote:
>>>>>> Hi,
>>>>>> I am using civetweb in my radosgw, if I use "rgw thread pool size"
>>>>>> that is more than 1024, civetweb doesn't work.
>>>>>> e.g.
>>>>>> rgw thread pool size = 1024
>>>>>> rgw frontends = "civetweb port=80"
>>>>>>
>>>>>> #ps aux -L | grep rados | wc -l
>>>>>> 1096
>>>>>>
>>>>>> everything works fine
>>>>>>
>>>>>>
>>>>>> If I use:
>>>>>> rgw thread pool size = 1025
>>>>>> rgw frontends = "civetweb port=80"
>>>>>>
>>>>>> # ps aux -L | grep rados | wc -l
>>>>>> 43
>>>>>>
>>>>>> And http server is not listening.
>>>>>>
>>>>>> If I don't use civetweb:
>>>>>> rgw thread pool size = 10240
>>>>>>
>>>>>> # ps aux -L | grep rados | wc -l
>>>>>> 10278
>>>>>>
>>>>>> Regards
>>>>>>
>>>>>> Mustafa Muhammad
>>>>>
>>>>> I found the problem, it is hardcoded here:
>>>>> https://github.com/ceph/civetweb/blob/master/src/civetweb.c
>>>>> as:
>>>>> #define MAX_WORKER_THREADS 1024
>>>>>
>>>>> I increased it to 20480 an compiled from source, problem solved.
>>>>> I should we make a patch, right?
>>>>
>>>> Please do, preferably a github pull request. Also, if you could open a
>>>> ceph tracker issue with the specific would be great.
>>>>
>>>> Thanks,
>>>> Yehuda
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>>>> the body of a message to majordomo@vger.kernel.org
>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>
>>>
>>>
>>> --
>>> -Pushpesh
>> --
>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
>
> --
> -Pushpesh
>
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-11-15 16:18 ` Yehuda Sadeh
2014-11-16 4:57 ` pushpesh sharma
2014-11-16 10:51 ` Mustafa Muhammad
@ 2014-11-27 17:35 ` Mustafa Muhammad
2014-12-01 21:56 ` Dan Mick
2 siblings, 1 reply; 13+ messages in thread
From: Mustafa Muhammad @ 2014-11-27 17:35 UTC (permalink / raw)
To: ceph-devel
On Sat, Nov 15, 2014 at 7:18 PM, Yehuda Sadeh <yehuda@redhat.com> wrote:
> On Sat, Nov 15, 2014 at 3:55 AM, Mustafa Muhammad
> <mustafaa.alhamdaani@gmail.com> wrote:
>> On Sat, Nov 15, 2014 at 10:28 AM, Mustafa Muhammad
>> <mustafaa.alhamdaani@gmail.com> wrote:
>>> Hi,
>>> I am using civetweb in my radosgw, if I use "rgw thread pool size"
>>> that is more than 1024, civetweb doesn't work.
>>> e.g.
>>> rgw thread pool size = 1024
>>> rgw frontends = "civetweb port=80"
>>>
>>> #ps aux -L | grep rados | wc -l
>>> 1096
>>>
>>> everything works fine
>>>
>>>
>>> If I use:
>>> rgw thread pool size = 1025
>>> rgw frontends = "civetweb port=80"
>>>
>>> # ps aux -L | grep rados | wc -l
>>> 43
>>>
>>> And http server is not listening.
>>>
>>> If I don't use civetweb:
>>> rgw thread pool size = 10240
>>>
>>> # ps aux -L | grep rados | wc -l
>>> 10278
>>>
>>> Regards
>>>
>>> Mustafa Muhammad
>>
>> I found the problem, it is hardcoded here:
>> https://github.com/ceph/civetweb/blob/master/src/civetweb.c
>> as:
>> #define MAX_WORKER_THREADS 1024
>>
>> I increased it to 20480 an compiled from source, problem solved.
>> I should we make a patch, right?
>
> Please do, preferably a github pull request. Also, if you could open a
> ceph tracker issue with the specific would be great.
Hi,
I opened an issue upstream:
https://github.com/bel2125/civetweb/issues/50
And this default is going to change to 64k using this pull request:
https://github.com/bel2125/civetweb/commit/23bdcc98dd72ac421ed0a9e82d66977089fbfe63
I should make a pull request and issue here too, right?
I tried to register with ceph issue tracker, but misspelled the email
address (wrote @gmai.com), now I can't take the name "mustafa" again
(I waited the request to expire, but until now I can't register).
Who can delete that wrong registration request so I can take this
username again?
Regards
Mustafa
>
> Thanks,
> Yehuda
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-11-27 17:35 ` Mustafa Muhammad
@ 2014-12-01 21:56 ` Dan Mick
2014-12-04 14:35 ` Mustafa Muhammad
0 siblings, 1 reply; 13+ messages in thread
From: Dan Mick @ 2014-12-01 21:56 UTC (permalink / raw)
To: Mustafa Muhammad, ceph-devel
> I tried to register with ceph issue tracker, but misspelled the email
> address (wrote @gmai.com), now I can't take the name "mustafa" again
> (I waited the request to expire, but until now I can't register).
> Who can delete that wrong registration request so I can take this
> username again?
Done; please contact me if reregistration doesn't work
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: civetweb threads
2014-12-01 21:56 ` Dan Mick
@ 2014-12-04 14:35 ` Mustafa Muhammad
0 siblings, 0 replies; 13+ messages in thread
From: Mustafa Muhammad @ 2014-12-04 14:35 UTC (permalink / raw)
To: Dan Mick; +Cc: ceph-devel
On Tue, Dec 2, 2014 at 12:56 AM, Dan Mick <dan.mick@inktank.com> wrote:
>
>> I tried to register with ceph issue tracker, but misspelled the email
>> address (wrote @gmai.com), now I can't take the name "mustafa" again
>> (I waited the request to expire, but until now I can't register).
>> Who can delete that wrong registration request so I can take this
>> username again?
>
> Done; please contact me if reregistration doesn't work
Thank you very much, it worked.
I created an issue:
http://tracker.ceph.com/issues/10243
I tried to make a pull request for your copy but after forking, I
noticed that the pull request is for the deprecated repo:
https://github.com/sunsetbrew/civetweb
Not the active upstream:
https://github.com/bel2125/civetweb
I think this should be fixed too.
Regrads
Mustafa
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2014-12-04 14:35 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-15 7:28 civetweb threads Mustafa Muhammad
2014-11-15 11:55 ` Mustafa Muhammad
2014-11-15 16:18 ` Yehuda Sadeh
2014-11-16 4:57 ` pushpesh sharma
2014-11-16 5:50 ` Yehuda Sadeh
2014-11-16 11:03 ` Mustafa Muhammad
[not found] ` <CAMc8nAXhouvyvVcFHs2mARzkR6-u9TWV-wxgca_zOeSGoa59cg@mail.gmail.com>
2014-11-17 12:46 ` Mustafa Muhammad
2014-11-16 10:51 ` Mustafa Muhammad
2014-11-16 17:11 ` Yehuda Sadeh
2014-11-17 12:09 ` pushpesh sharma
2014-11-27 17:35 ` Mustafa Muhammad
2014-12-01 21:56 ` Dan Mick
2014-12-04 14:35 ` Mustafa Muhammad
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.