2014-11-29 10:06 GMT+01:00 David Lang <[email protected]>:

> but why should this cause the latency to increase based on the number of
> simultanious writers?


I'd assume that's locking contention. After all, there seem to be 500
writes plus 1 reader (rsyslog) contenting on that socket.


> that's what makes me think that rsyslog may not be acking the messages one
> at a time, but instead is acking all of them that it's processing in one
> batch.
>
>
No, it just waits for the socket to become ready and than does single reads
until no more messages are available. Have a look here:

https://github.com/rsyslog/rsyslog/blob/master/plugins/imuxsock/imuxsock.c#L1379

The read loop is inside readSocket().

That's why I conclude this whole problem is totally outside of rsyslog.

Rainer

> David Lang
>
>
> On Sat, 29 Nov 2014, Rainer Gerhards wrote:
>
>  I think that's an issue with the syslog () api. It is synchronous, so
>> blocking is expected. I guess the rest of the problem is that linux puts
>> mutexes around the /dev/log writes (after all, writes are atomic).
>>
>> Sent from phone, thus brief.
>> Am 28.11.2014 23:57 schrieb "David Lang" <[email protected]>:
>>
>>  Hmm, I wonder if the batch size is what you are seeing (where rsyslog
>>> processes multiple messages at once).
>>>
>>> We'll need to wait until Rainer can comment for sure, but you may want to
>>> try setting the batch size very low (say 5) and see if that puts a cap on
>>> the latency that you see.
>>>
>>> We've done a lot of testing for throughput, both from a single process
>>> and
>>> from multiple processes, but I don't remember every looking at
>>> per-process
>>> latency before.
>>>
>>> David Lang
>>>
>>> On Fri, 28 Nov 2014, Mehrdad Pazooki wrote:
>>>
>>>  I am using:
>>>
>>>>
>>>> rsyslogd 8.4.2.ad1, compiled with:
>>>>    FEATURE_REGEXP:                Yes
>>>>    GSSAPI Kerberos 5 support:        No
>>>>    FEATURE_DEBUG (debug build, slow code):    No
>>>>    32bit Atomic operations supported:    Yes
>>>>    64bit Atomic operations supported:    Yes
>>>>    memory allocator:            system default
>>>>    Runtime Instrumentation (slow code):    No
>>>>    uuid support:                Yes
>>>>    Number of Bits in RainerScript integers: 32 (due to too-old json-c
>>>> lib)
>>>>
>>>> It is handling a very high volume but syslog() blocks and the blocking
>>>> time
>>>> is not constant, so as I add more processes that are making a syslog()
>>>> call
>>>> the blocking time increases by 10usec per process on my machine.
>>>>
>>>>
>>>>
>>>>
>>>> On Fri, Nov 28, 2014 at 4:50 PM, David Lang <[email protected]> wrote:
>>>>
>>>>  what version of rsyslog are you running?
>>>>
>>>>>
>>>>> rsyslog should be able to keep up with a very high volume of logs being
>>>>> delivered to /dev/log, but there are significant improvements between
>>>>> the
>>>>> version of rsyslog that was shipped in 12.05 (which I think was 5.x)
>>>>> and
>>>>> the current 8.x versions
>>>>>
>>>>> David Lang
>>>>>
>>>>>
>>>>>  On Fri, 28 Nov 2014, Mehrdad Pazooki wrote:
>>>>>
>>>>>  Date: Fri, 28 Nov 2014 10:14:30 -0500
>>>>>
>>>>>  From: Mehrdad Pazooki <[email protected]>
>>>>>> Reply-To: rsyslog-users <[email protected]>
>>>>>> To: rsyslog-users <[email protected]>
>>>>>> Subject: Re: [rsyslog] Calling syslog() is slow - it takes +100usec
>>>>>>
>>>>>>
>>>>>> There is no systemd on this platform.
>>>>>>
>>>>>> More details about the platform:
>>>>>>
>>>>>> Description:    Ubuntu 12.04.1 LTS
>>>>>> Release:    12.04
>>>>>> Codename:    precise
>>>>>>
>>>>>> Linux 3.13.0-39-generic #66-Ubuntu SMP
>>>>>>
>>>>>>
>>>>>> On Fri, Nov 28, 2014 at 7:14 AM, Mehrdad Pazooki <[email protected]
>>>>>> >
>>>>>> wrote:
>>>>>>
>>>>>>  It's running in Ubuntu (precise). I'll check it for systemd. I think
>>>>>>
>>>>>>  syslog call is blocking because of /dev/log . if I use UDP locally,
>>>>>>> will
>>>>>>> that bypass /Dev/log?
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Nov 28, 2014, 04:08 Rainer Gerhards <
>>>>>>> [email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>  which platform is this running on? Is systemd journal active?
>>>>>>>
>>>>>>>
>>>>>>>> Rainer
>>>>>>>>
>>>>>>>> 2014-11-27 22:37 GMT+01:00 Mehrdad Pazooki <[email protected]>:
>>>>>>>>
>>>>>>>>  Hi,
>>>>>>>>
>>>>>>>>
>>>>>>>>> I am calling syslog in c++ using syslog.h . the time it takes on
>>>>>>>>> each
>>>>>>>>>
>>>>>>>>>  call
>>>>>>>>>
>>>>>>>>
>>>>>>>>  is too long. I am comparing it with IPC Queue and there is almost
>>>>>>>>
>>>>>>>>>
>>>>>>>>>  100usec
>>>>>>>>>
>>>>>>>>
>>>>>>>>  overhead when I call syslog() vs ipc.
>>>>>>>>
>>>>>>>>> I did some benchmarking, when I use a single process for hitting
>>>>>>>>> syslog
>>>>>>>>>
>>>>>>>>>  the
>>>>>>>>>
>>>>>>>>
>>>>>>>>  performance is great it stays at avg 11usec/record for 1m records
>>>>>>>> on
>>>>>>>>
>>>>>>>>> my
>>>>>>>>> system. but if I run 10 of these processes the time will increase
>>>>>>>>> to
>>>>>>>>>
>>>>>>>>>  about
>>>>>>>>>
>>>>>>>>
>>>>>>>>  100usec/record.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Another problem is that memory usage remains really low ~0% so that
>>>>>>>>>
>>>>>>>>>  tells
>>>>>>>>>
>>>>>>>>
>>>>>>>>  me syslog() is somehow blocking and using cpu rather than do a set
>>>>>>>> an
>>>>>>>>
>>>>>>>>> forget to the queue and process it later on. another issue is that
>>>>>>>>> all
>>>>>>>>> workers are not engage. I see 5 workers but only 3 are working.
>>>>>>>>> The way I'm using it in prod is about 500 threads hit syslog(). I
>>>>>>>>> need
>>>>>>>>>
>>>>>>>>>  to
>>>>>>>>>
>>>>>>>>
>>>>>>>>  keep the time it takes for a syslog() call to a constant of 10usec
>>>>>>>>
>>>>>>>>>
>>>>>>>>>  ideal to
>>>>>>>>>
>>>>>>>>
>>>>>>>>  max 40usec.
>>>>>>>>
>>>>>>>>> Also, I am not doing openlog() before calling syslog()
>>>>>>>>>
>>>>>>>>> This is my configuration:
>>>>>>>>>
>>>>>>>>> #  /etc/rsyslog.conf    Configuration file for rsyslog.
>>>>>>>>> #
>>>>>>>>> #            For more information see
>>>>>>>>> #            /usr/share/doc/rsyslog-doc/
>>>>>>>>> html/rsyslog_conf.html
>>>>>>>>> #
>>>>>>>>> #  Default logging rules can be found in
>>>>>>>>> /etc/rsyslog.d/50-default.conf
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> #################
>>>>>>>>> #### MODULES ####
>>>>>>>>> #################
>>>>>>>>> $ModLoad imuxsock # provides support for local system logging
>>>>>>>>> $ModLoad imklog   # provides kernel logging support (previously
>>>>>>>>> done
>>>>>>>>> by
>>>>>>>>> rklogd)
>>>>>>>>> #$ModLoad immark  # provides --MARK-- message capability
>>>>>>>>>
>>>>>>>>> # provides UDP syslog reception
>>>>>>>>> #$ModLoad imudp
>>>>>>>>> #$UDPServerRun 514
>>>>>>>>>
>>>>>>>>> # provides TCP syslog reception
>>>>>>>>> #$ModLoad imtcp
>>>>>>>>> #$InputTCPServerRun 514
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> # For debug only
>>>>>>>>> # module(load="impstats" interval="1" severity="8")
>>>>>>>>>
>>>>>>>>> ###########################
>>>>>>>>> #### GLOBAL DIRECTIVES ####
>>>>>>>>> ###########################
>>>>>>>>>
>>>>>>>>> #
>>>>>>>>> # Use traditional timestamp format.
>>>>>>>>> # To enable high precision timestamps, comment out the following
>>>>>>>>> line.
>>>>>>>>> #
>>>>>>>>> $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
>>>>>>>>>
>>>>>>>>> # Filter duplicated messages
>>>>>>>>> $RepeatedMsgReduction off
>>>>>>>>>
>>>>>>>>> #
>>>>>>>>> # Set the default permissions for all log files.
>>>>>>>>> #
>>>>>>>>> $FileOwner root
>>>>>>>>> $FileGroup adm
>>>>>>>>> $FileCreateMode 0640
>>>>>>>>> $DirCreateMode 0755
>>>>>>>>> $Umask 0022
>>>>>>>>> $PrivDropToUser root
>>>>>>>>> $PrivDropToGroup root
>>>>>>>>>
>>>>>>>>> #
>>>>>>>>> # Where to place spool files
>>>>>>>>> #
>>>>>>>>> $WorkDirectory /var/spool/rsyslog
>>>>>>>>>
>>>>>>>>> $ActionResumeRetryCount         -1                    # infinite
>>>>>>>>>
>>>>>>>>>  retries if
>>>>>>>>>
>>>>>>>>
>>>>>>>>  host is down
>>>>>>>>
>>>>>>>>> $SystemLogRateLimitInterval     0
>>>>>>>>> $SystemLogRateLimitBurst        0
>>>>>>>>> $MaxMessageSize                    4k
>>>>>>>>>
>>>>>>>>> main_queue(
>>>>>>>>>     queue.Type="LinkedList"
>>>>>>>>>     queue.Size="1000000"
>>>>>>>>>     queue.workerThreads="8"
>>>>>>>>>     queue.workerThreadMinimumMessages="10000"
>>>>>>>>>     queue.SaveOnShutdown="on"
>>>>>>>>> )
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> template(name="localone" type="string" string="%msg:2:$%\n") #
>>>>>>>>> ":2:$"
>>>>>>>>>
>>>>>>>>>  -->
>>>>>>>>>
>>>>>>>>
>>>>>>>>  tells rsyslog to ignore the leading char, b/c rsyslog adds a
>>>>>>>> leading
>>>>>>>>
>>>>>>>>>
>>>>>>>>>  space
>>>>>>>>>
>>>>>>>>
>>>>>>>>  to every message
>>>>>>>>
>>>>>>>>>
>>>>>>>>> if $syslogfacility-text == 'local1' then {
>>>>>>>>>     action(
>>>>>>>>>         type="omfile"
>>>>>>>>>         template="localone"
>>>>>>>>>         file="/var/log/local1.log"
>>>>>>>>>         flushOnTXEnd="off"
>>>>>>>>>         asyncWriting="on"
>>>>>>>>>         ioBufferSize="64k"
>>>>>>>>>         queue.type="LinkedList"
>>>>>>>>>         queue.size="1000000"
>>>>>>>>>         queue.dequeueBatchSize="4096"
>>>>>>>>>         queue.workerThreads="8"
>>>>>>>>>         queue.workerThreadMinimumMessages="10000"
>>>>>>>>>         queue.SaveOnShutdown="on"
>>>>>>>>>         action.ResumeRetryCount="-1"
>>>>>>>>>     )
>>>>>>>>>     stop
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> #if $syslogtag contains 'rsyslogd-pstats' then {
>>>>>>>>> #     action(
>>>>>>>>> #        type="omfile"
>>>>>>>>> #        queue.type="LinkedList"
>>>>>>>>> #        queue.discardmark="1000"
>>>>>>>>> #        name="pstats"
>>>>>>>>> #        file="/var/log/pstats.log"
>>>>>>>>> #    )
>>>>>>>>> #    stop
>>>>>>>>> #}
>>>>>>>>> _______________________________________________
>>>>>>>>> rsyslog mailing list
>>>>>>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>>>>>>>> http://www.rsyslog.com/professional-services/
>>>>>>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>>>>>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>>>>>>>>> myriad
>>>>>>>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if
>>>>>>>>> you
>>>>>>>>> DON'T LIKE THAT.
>>>>>>>>>
>>>>>>>>>  _______________________________________________
>>>>>>>>>
>>>>>>>>>  rsyslog mailing list
>>>>>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>>>>>>> http://www.rsyslog.com/professional-services/
>>>>>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>>>>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>>>>>>>> myriad
>>>>>>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if
>>>>>>>> you
>>>>>>>> DON'T LIKE THAT.
>>>>>>>>
>>>>>>>>
>>>>>>>>   _______________________________________________
>>>>>>>>
>>>>>>>
>>>>>>>  rsyslog mailing list
>>>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>>>>> http://www.rsyslog.com/professional-services/
>>>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>>>>>> myriad
>>>>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>>>>>> DON'T LIKE THAT.
>>>>>>
>>>>>>  _______________________________________________
>>>>>>
>>>>>>  rsyslog mailing list
>>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>>>> http://www.rsyslog.com/professional-services/
>>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>>>>> myriad
>>>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>>>>> DON'T LIKE THAT.
>>>>>
>>>>>  _______________________________________________
>>>>>
>>>> rsyslog mailing list
>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>>> http://www.rsyslog.com/professional-services/
>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
>>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>>>> DON'T LIKE THAT.
>>>>
>>>>  _______________________________________________
>>>>
>>> rsyslog mailing list
>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> http://www.rsyslog.com/professional-services/
>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>>> DON'T LIKE THAT.
>>>
>>>  _______________________________________________
>> rsyslog mailing list
>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> http://www.rsyslog.com/professional-services/
>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>> DON'T LIKE THAT.
>>
>>  _______________________________________________
> rsyslog mailing list
> http://lists.adiscon.net/mailman/listinfo/rsyslog
> http://www.rsyslog.com/professional-services/
> What's up with rsyslog? Follow https://twitter.com/rgerhards
> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
> DON'T LIKE THAT.
>
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to