but why should this cause the latency to increase based on the number of simultanious writers? 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.

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.

Reply via email to