Description of problem: bug in kscand source code (I think) active_anon_count used where active_cache_count should be used. See below. Version-Release number of selected component (if applicable):2.4.21-40 How reproducible: int kscand(void *unused) { struct task_struct *tsk = current; struct zone_struct * zone; unsigned long iv; int age; daemonize(); strcpy(tsk->comm, "kscand"); sigfillset(&tsk->blocked); for (;;) { set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(MIN_AGING_INTERVAL); for_each_zone(zone) { if (time_before(jiffies, zone->age_next)) continue; if (need_active_anon_scan(zone)) { for (age = MAX_AGE-1; age >= 0; age--) { scan_active_list(zone, age, &zone->active_anon_list[age], zone->active_anon_count[age]); if (current->need_resched) schedule(); } } if (need_active_cache_scan(zone)) { for (age = MAX_AGE-1; age >= 0; age--) { scan_active_list(zone, age, &zone->active_cache_list[age], SHOULDN'T THIS BE zone->active_cache_count[age]??? zone->active_anon_count[age]); if (current->need_resched) schedule(); } } iv = zone->age_interval; /* Check if we've been aging quickly enough ... */ if (zone->need_scan >= 2) iv = max(iv / 2, MIN_AGING_INTERVAL); /* ... or too quickly. */ else if (!zone->need_scan) iv = min(iv + (iv / 2), MAX_AGING_INTERVAL); zone->need_scan = 0; zone->age_interval = iv; zone->age_next = jiffies + iv; } } }
Agreed. This bug was introduced in U6 (-32.12.EL) with this changelog entry: - eliminate long system pauses when kscand is running (Larry Woodman) Too bad the problem hasn't been noticed until now, 5 weeks after U8 code freeze. RHEL3 is now closed.
So, are you going to mark this CLOSED/WONTFIX? If not.. what is your plan for this bug?
Hi James. You are correct this was a cut and paste error on my part. I think the reason I(and nobody else) havent noticed it yet is that this part of the code really doesnt run very often or do very much. The reason is because active cache pages dont get aged up and down the way anonymous pages do because they are typically not mapped. Have you noticed a problem here or was it found by inspection? Larry Woodman
Code inspection.. however, to satisfy my external customer, I'd love to have a few minutes to talk with you about possible ramifications. Any chance we can chat on the phone, or should be carry on a conversation here.
Sure, either way. I'm send you my phone in email. Larry
Larry's patch for this was posted for internal review on 20-Sep-2006.
This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux maintenance release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Update release for currently deployed products. This request is not yet committed for inclusion in an Update release.
QE ack for 3.9.
A fix for this problem has just been committed to the RHEL3 U9 patch pool this evening (in kernel version 2.4.21-47.3.EL).
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2007-0436.html