linaro-release team mailing list archive
-
linaro-release team
-
Mailing list archive
-
Message #00455
[Bug 709245] Re: ARM SMP scheduler performance bug
comparing the boot logs of an smp and a nosmp kernel (see attached
file), what struck me was an error message about the smp_twd clock:
CPU: Testing write buffer coherency: ok
-twd_timer_setup: no clock found <<<<<
-Calibrating local timer... 492.00MHz. <<<<<
L310 cache controller enabled
l2x0: 16 ways, CACHE_ID 0x410000c4, AUX_CTRL 0x5e470000, Cache size: 1048576 B
looking closer at the code, i found that:
smp_twd.c::twd_timer_setup():
...
if (twd_clk == NULL) {
twd_clk = clk_get_sys("smp_twd", NULL);
if (IS_ERR_OR_NULL(twd_clk))
pr_warn("%s: no clock found\n", __func__);
}
...
and clk_get_sys() prototype is:
struct clk *clk_get_sys(const char *dev_id, const char *con_id)
while clocks are defined as:
clock44xx_data.c in struct omap_clk omap44xx_clks[]:
...
CLK(NULL, "smp_twd", &smp_twd, CK_44XX)
...
#define CLK(dev, con, ck, cp) \
{ \
.cpu = cp, \
.lk = { \
.dev_id = dev, \
.con_id = con, \
.clk = ck, \
}, \
}
so the parameters in clk_get_sys() are inverted:
--- a/arch/arm/kernel/smp_twd.c
+++ b/arch/arm/kernel/smp_twd.c
@@ -175,7 +175,8 @@ static void __cpuinit twd_calibrate_rate(void)
*/
void __cpuinit twd_timer_setup(struct clock_event_device *clk)
{
if (twd_clk == NULL) {
- twd_clk = clk_get_sys("smp_twd", NULL);
+ twd_clk = clk_get_sys(NULL, "smp_twd");
if (IS_ERR_OR_NULL(twd_clk))
pr_warn("%s: no clock found\n", __func__);
this will make the error go away, but unfortunately won't fix the i/o
problem.
hdparm -t /dev/sda1
smp:
/dev/sda1:
Timing buffered disk reads: 6 MB in 4.73 seconds = 1.27 MB/sec
nosmp:
/dev/sda1:
Timing buffered disk reads: 44 MB in 3.08 seconds = 14.27 MB/sec
** Attachment added: "dmesg comparison: smp vs nosmp"
https://bugs.launchpad.net/ubuntu/+source/linux-ti-omap4/+bug/709245/+attachment/2286211/+files/3.0.0-1202-omap4.smpvsnosmp
--
You received this bug notification because you are a member of Linaro
Release Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/709245
Title:
ARM SMP scheduler performance bug
Status in Linaro Ubuntu Evaluation Builds:
Confirmed
Status in Linaro Linux:
Confirmed
Status in “linux-ti-omap4” package in Ubuntu:
Confirmed
Status in “linux-ti-omap4” source package in Maverick:
Confirmed
Status in “linux-ti-omap4” source package in Natty:
Confirmed
Status in “linux-ti-omap4” source package in Oneiric:
Confirmed
Bug description:
Original Bug name: "panda: USB disk IO slow"
My Panda's USB seems to be significantly slower than a Beagle C4.
hdparm shows buffered reads as ~12MB/s on the Panda, and about ~20-25MB/s on a Beagle C4 from the same
external Lacie USB disk.
Kernel is 2.6.37-1002-linaro-omap
Disk shows as:
[ 5.170440] scsi 0:0:0:0: Direct-Access LaCie d2 quadra PQ: 0 ANSI: 4
[ 5.172546] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 5.175415] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
The board is otherwise idle during the test.
Doing perf_2.6.37-12 record -a dd if=/dev/sda of=/dev/null bs=4096
count=100000
shows :
81.41% swapper [kernel.kallsyms] [k] default_idle
6.33% dd [kernel.kallsyms] [k] __copy_to_user
0.94% swapper [kernel.kallsyms] [k] cpu_idle
0.51% dd [kernel.kallsyms] [k] __make_request
0.51% perf_2.6.37-12 [kernel.kallsyms] [k] __copy_from_user
which suggests it's not CPU constrained.
Dave
To manage notifications about this bug go to:
https://bugs.launchpad.net/linaro-ubuntu/+bug/709245/+subscriptions