Severe performance degradation on Linux

Michael Meeks michael.meeks at collabora.com
Wed Jan 7 01:27:18 PST 2015


Hi Maarten,

On Wed, 2015-01-07 at 09:21 +0100, Maarten Hoes wrote:
> Two more things I noticed, though again Im not sure how relevant those
> are, it's probably nothing :

	So the thing you're looking for looks often like this:

3986  1420550762.879658 poll([{fd=6, events=POLLIN}], 1, 4294967295 <unfinished ...>
3986  1420550767.916824 <... poll resumed> ) = 1 ([{fd=6, revents=POLLIN}])

	Which is from your log; the poll that timed out just before it is
~irrelevant we tend to do a zero timeout (non-blocking) poll before we
do a blocking one for one reason and another - ignore that.

	The question is - what is this fd 6 we are polling on - I searched
backwards in your log for ') = 6$' and got:
> 
3986  1420550762.752026 open("/home/buildslave/source/libo-core/instdir/program/../program/bootstraprc", O_RDONLY|O_EXCL <unfinished ...>
3986  1420550762.752085 <... open resumed> ) = 6

	Which is nonsense - since we immediately close that fd again. So then I
looked for socket = and pipe:

3986  1420550762.753764 pipe( <unfinished ...>
3986  1420550762.753808 <... pipe resumed> [6, 7]) = 0

	Which seems to be in this context:

3986  1420550762.753207 lstat("/home/buildslave/source/libo-core/instdir/program", {st_mode=S_IFDIR|0775, st_size=20480, ...}) = 0
3986  1420550762.753235 lstat("/home/buildslave/source/libo-core/instdir/program/libvcllo.so", {st_mode=S_IFREG|0775, st_size=8609416, ...}) = 0
3986  1420550762.753259 futex(0x7f160b8d50c8, FUTEX_WAKE_PRIVATE, 2147483647 <unfinished ...>
3986  1420550762.753285 <... futex resumed> ) = 0
3986  1420550762.753764 pipe( <unfinished ...>
3986  1420550762.753808 <... pipe resumed> [6, 7]) = 0
3986  1420550762.753829 fcntl(6, F_GETFD) = 0
3986  1420550762.753867 fcntl(6, F_SETFD, FD_CLOEXEC) = 0
3986  1420550762.753885 fcntl(7, F_GETFD <unfinished ...>
3986  1420550762.753930 <... fcntl resumed> ) = 0
3986  1420550762.753945 fcntl(7, F_SETFD, FD_CLOEXEC) = 0
3986  1420550762.753978 fcntl(6, F_GETFL) = 0 (flags O_RDONLY)
3986  1420550762.754003 fcntl(6, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
3986  1420550762.754028 fcntl(7, F_GETFL) = 0x1 (flags O_WRONLY)
3986  1420550762.754038 fcntl(7, F_SETFL, O_WRONLY|O_NONBLOCK <unfinished ...>

	Which looks like a reasonably normal pipe setup - but - I wonder what
it's for =) I imagine to communicate with:

3986  1420550762.809356 clone(child_stack=0x7f15f2372eb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f15f23739d0, tls=0x7f15f2373700, child_tidptr=0x7f15f23739d0) = 3989

	Whatever is 'execve'd from that fork - unfortunately I don't see the -f
strace output there - to be able to follow that. Something (prolly vcl)
spawns something - and we block for 5 seconds on the output of that.

	But of course it could be the 'headless' main-loop pipe.

	Anyhow - hopefully that gives some pointers that you can puzzle through
& try to trace / chase down what's going wrong for you.

	ATB,

		Michael.	

-- 
 michael.meeks at collabora.com  <><, Pseudo Engineer, itinerant idiot



More information about the LibreOffice mailing list