Bug 1103240
Summary: | readahead behavior change - possible performance regressions | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Jiri Jaburek <jjaburek> |
Component: | kernel | Assignee: | Larry Woodman <lwoodman> |
kernel sub component: | Memory Management | QA Contact: | Jiri Jaburek <jjaburek> |
Status: | CLOSED DUPLICATE | Docs Contact: | |
Severity: | medium | ||
Priority: | medium | CC: | aquini, ebenes, loberman, lwang, lwoodman, riel, sbest |
Version: | 7.0 | Flags: | lwoodman:
needinfo+
|
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2016-11-17 15:43:08 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 1296180, 1394638, 1404314 |
Description
Jiri Jaburek
2014-05-30 14:09:10 UTC
Did anyone ever verify this was a real problem or is it just speculation??? Larry Woodman I went through numbers our performance team came up while doing their regression tests for rhel-6 and rhel-7 and I haven't find any change that could be directly linked with the change mentioned at comment #0. Other than setting a hard ceiling of 2MB for any issued readahead, which might be seen as trouble for certain users/usecases, there seems to be no other measurable loss here. OTOH, the tangible gain after the change is having the readahead working for NUMA layouts where some CPUs are within a memoryless node. A bug similar to this one was reported upstream -- https://lkml.org/lkml/2014/7/3/416 -- and it has lead to the following discussion thread: https://lkml.org/lkml/2014/7/3/416 Upstream bug mentioned at comment #5: https://bugzilla.kernel.org/show_bug.cgi?id=79111 A couple of notes based on upstream discussion and actual code placements: (In reply to Jiri Jaburek from comment #0) > The problem is that readahead(2) doesn't do what the manpage claims; > "readahead() blocks until the specified data has been read." > is not true - on newer kernels, it has an artificial limit, which seems to > be 2MB (512 * 4K pages?). > This is, actually, a man-page misguided expectation. The code readahead(2) relies on has never made such guarantee. There seems to be a patch upstream to fix that man-page misunderstanding: http://www.spinics.net/lists/linux-mm/msg70517.html > Actual results: > readahead(2) reads less than 'count' bytes > > Expected results: > readahead(2) reads exactly 'count' bytes > There's never been a guarantee readahead(2) would bring into pagecache "exactly 'count' bytes". The big change here, on the other hand, is that before the aforementioned change, codepaths relying on force_page_cache_readahead() would try to read-ahead as much as the total amount of free and reclaimable file memory in a given node would allow it. After the change, force_page_cache_readahead() itself is capped to a 2MB max effort, and that's why you're seeing such values being reported for cached memory after readahead(2) calls in your testcase. Regards, -- Rafael *** This bug has been marked as a duplicate of bug 1062288 *** |