Bug 8260
Summary: | System slow down with ps3-linux git tree kernel | ||
---|---|---|---|
Product: | Platform Specific/Hardware | Reporter: | Hiroyuki Machida (Hiroyuki.Mach) |
Component: | PS3 | Assignee: | Geoff Levand (geoffrey.levand) |
Status: | CLOSED PATCH_ALREADY_AVAILABLE | ||
Severity: | high | ||
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.21-rc4 | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Attachments: |
a script to reproduce the problem
Result with 2.6.16 kernel result with 2.6.21-rc4 |
Description
Hiroyuki Machida
2007-03-25 17:13:44 UTC
Created attachment 10939 [details]
a script to reproduce the problem
Created attachment 10940 [details]
Result with 2.6.16 kernel
Created attachment 10941 [details]
result with 2.6.21-rc4
- We started to see the problem in 2.6.19 after enabling the 2nd PPE thread. - Before we used only one PPE thread on 2.6.19, and we didn't notice any interactive sluggyness (the storage driver wasn't ported to 2.6.19 before that, so no data about that). - If interrupts are routed to the 2nd PPE thread, the system is much slower. - 2.6.19 distributed the interrupts randomly over the 2 PPEs. Depending on which interrupt(s) got routed to the 2nd PPE thread, the system was slower or faster. E.g. If the gelic (Ethernet) interrupt is routed to the 2nd PPE and you use NFS root, it's very slow. - The current kernel routes all interrupts to the 1st PPE thread (cfr. `if (cpu == PS3_BINDING_CPU_ANY) cpu = 0;'), but it's still slower then 2.6.16. - You can easily test the additional slowdown by changing the default to `cpu = 1;'. - 2.6.16 distributed the interrupts randomly over the 2 PPEs, too. So just routing interrupts to the 2nd PPE thread is not the sole cause of the problem. This bug is come from hypervisor side behavior. Geoff already pushed the fixes to kernel.org: commit ps3-linux-patches-709611b712bd6f036ed363fe636a25220a2942e1 commit ps3-linux-dc41a7414189b43747100a50c5155d82846227bb The relevant fixes are listed below. ps3-wip/ps3-fix-slowdown-bug.diff ps3-wip/ps3snd-kill-iopte-failure.diff ps3-wip/ps3snd-fix-noise.diff set CONFIG_DEBUG_SLAB=n |