"Bert Huijben" <b...@qqmail.nl> writes:

> Nice idea on the concept, but this patch doesn't implement that behavior
>
> You will see the first result very fast. (No behavior change)

I don't understand, I see a behaviour change when I try it.

The first few writes with my patch:

[pid  8814] writev(17, [{"HTTP/1.1 200 OK\r\nDate: Mon, 16 M"..., 189}, 
{"1f53\r\n", 6}, {"<?xml version=\"1.0\" encoding=\"ut"..., 7965}, 
{"<S:log-item>\n<D:version-name>166"..., 54}, {"\r\n", 2}], 5) = 8216
[pid  8814] writev(17, [{"1f55\r\n", 6}, 
{"<D:creator-displayname>rhuijben<"..., 7976}, 
{"<S:date>2015-02-14T00:17:25.9215"..., 45}, {"\r\n", 2}], 4) = 8029
[pid  8814] writev(17, [{"1f6d\r\n", 6}, 
{"</S:log-item>\n<S:log-item>\n<D:ve"..., 8000}, 
{"<S:date>2015-01-15T04:00:33.4982"..., 45}, {"\r\n", 2}], 4) = 8053
[pid  8814] writev(17, [{"1f4e\r\n", 6}, 
{"</S:log-item>\n<S:log-item>\n<D:ve"..., 7958}, 
{"<D:creator-displayname>rhuijben<"..., 56}, {"\r\n", 2}], 4) = 8022
[pid  8814] writev(17, [{"1f47\r\n", 6}, 
{"<S:date>2014-11-25T12:20:06.2266"..., 7953}, 
{"<S:log-item>\n<D:version-name>162"..., 54}, {"\r\n", 2}], 4) = 8015
[pid  8814] writev(17, [{"ba0\r\n", 5}, {"<D:creator-displayname>stsp</D:c"..., 
2976}, {"\r\n", 2}], 3) = 2983
[pid  8814] writev(17, [{"1f52\r\n", 6}, 
{"<S:log-item>\n<D:version-name>161"..., 7973}, 
{"<S:date>2014-06-30T13:46:18.9128"..., 45}, {"\r\n", 2}], 4) = 8026

The current code without my patch:

[pid  9113] writev(17, [{"HTTP/1.1 200 OK\r\nDate: Mon, 16 M"..., 189}, 
{"fd\r\n", 4}, {"<?xml version=\"1.0\" encoding=\"ut"..., 253}, {"\r\n", 2}], 
4) = 448
[pid  9113] writev(17, [{"a9\r\n", 4}, {"<S:log-item>\n<D:version-name>166"..., 
169}, {"\r\n", 2}], 3) = 175
[pid  9113] writev(17, [{"14e\r\n", 5}, 
{"<S:log-item>\n<D:version-name>166"..., 334}, {"\r\n", 2}], 3) = 341
[pid  9113] writev(17, [{"294\r\n", 5}, 
{"<S:log-item>\n<D:version-name>166"..., 660}, {"\r\n", 2}], 3) = 667
[pid  9113] writev(17, [{"53a\r\n", 5}, 
{"<S:log-item>\n<D:version-name>166"..., 1338}, {"\r\n", 2}], 3) = 1345
[pid  9113] writev(17, [{"a7c\r\n", 5}, 
{"<S:log-item>\n<D:version-name>166"..., 2684}, {"\r\n", 2}], 3) = 2691
[pid  9113] writev(17, [{"1511\r\n", 6}, 
{"<S:log-item>\n<D:version-name>166"..., 5393}, {"\r\n", 2}], 3) = 5401
[pid  9113] writev(17, [{"1f46\r\n", 6}, 
{"<S:log-item>\n<D:version-name>166"..., 7951}, 
{"<D:creator-displayname>stefan2</"..., 55}, {"\r\n", 2}], 4) = 8014
[pid  9113] writev(17, [{"aba\r\n", 5}, {"<S:date>2015-02-13T10:00:18.5170"..., 
2746}, {"\r\n", 2}], 3) = 2753
[pid  9113] writev(17, [{"1f61\r\n", 6}, 
{"<S:log-item>\n<D:version-name>165"..., 7988}, 
{"<S:date>2014-12-06T02:05:01.7811"..., 45}, {"\r\n", 2}], 4) = 8041
[pid  9113] writev(17, [{"1f60\r\n", 6}, 
{"</S:log-item>\n<S:log-item>\n<D:ve"..., 7976}, 
{"<D:creator-displayname>rhuijben<"..., 56}, {"\r\n", 2}], 4) = 8040
[pid  9113] writev(17, [{"153a\r\n", 6}, 
{"<S:date>2014-10-20T12:44:19.4131"..., 5434}, {"\r\n", 2}], 3) = 5442


> BTW 500 msec is about two or three the time you expect for google page of
> results.... Why this arbritrary number?

How do you explain the 2 and 2048 in the current code?  They are all
just arbitrary numbers.  Make it 100ms instead of 500ms.  The trace
above is what I got for a debug build and 200ms.  Several 8K writes in
the first 200ms followed by a short 3K write when the first extra flush
triggers after 200ms.  That's a very fast server that doesn't need the
extra flushes.

If I introduce a delay into the log loop, 50ms between revisions, I see
more of the extra flushes:

[pid  9751] writev(17, [{"HTTP/1.1 200 OK\r\nDate: Mon, 16 M"..., 189}, 
{"588\r\n", 5}, {"<?xml version=\"1.0\" encoding=\"ut"..., 1416}, {"\r\n", 2}], 
4) = 1612
[pid  9751] writev(17, [{"53a\r\n", 5}, 
{"<S:log-item>\n<D:version-name>166"..., 1338}, {"\r\n", 2}], 3) = 1345
[pid  9751] writev(17, [{"a7c\r\n", 5}, 
{"<S:log-item>\n<D:version-name>166"..., 2684}, {"\r\n", 2}], 3) = 2691
[pid  9751] writev(17, [{"1511\r\n", 6}, 
{"<S:log-item>\n<D:version-name>166"..., 5393}, {"\r\n", 2}], 3) = 5401
[pid  9751] writev(17, [{"1f46\r\n", 6}, 
{"<S:log-item>\n<D:version-name>166"..., 7951}, 
{"<D:creator-displayname>stefan2</"..., 55}, {"\r\n", 2}], 4) = 8014
[pid  9751] writev(17, [{"aba\r\n", 5}, {"<S:date>2015-02-13T10:00:18.5170"..., 
2746}, {"\r\n", 2}], 3) = 2753
[pid  9751] writev(17, [{"1f61\r\n", 6}, 
{"<S:log-item>\n<D:version-name>165"..., 7988}, 
{"<S:date>2014-12-06T02:05:01.7811"..., 45}, {"\r\n", 2}], 4) = 8041
[pid  9751] writev(17, [{"1f60\r\n", 6}, 
{"</S:log-item>\n<S:log-item>\n<D:ve"..., 7976}, 
{"<D:creator-displayname>rhuijben<"..., 56}, {"\r\n", 2}], 4) = 8040
[pid  9751] writev(17, [{"153a\r\n", 6}, 
{"<S:date>2014-10-20T12:44:19.4131"..., 5434}, {"\r\n", 2}], 3) = 5442
[pid  9751] writev(17, [{"1f52\r\n", 6}, 
{"<S:log-item>\n<D:version-name>161"..., 7973}, 
{"<S:date>2014-06-30T13:46:18.9128"..., 45}, {"\r\n", 2}], 4) = 8026

The first flush happens after 8 revisions because the first 4 revisions
all get written within the first 200ms.  The 8th revision is the first
flush after 200ms.

I'm not claiming this is the best algorithm, I just want to know if it
is the sort of thing we want.

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Reply via email to