richardrebel
May 17th, 2009, 03:44 PM
I am having this issue on 8.10, and on 9.04. I compiled 64 bit versions out of svn.
Also, this is occurs with XBMC, and it is the culprit. Doing an strace to see what boxee or xbmc are doing gets this:
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34110, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64198, ru_nivcsw=19063}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34110, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64200, ru_nivcsw=19063}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34110, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64202, ru_nivcsw=19063}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34110, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64204, ru_nivcsw=19063}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34110, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64206, ru_nivcsw=19063}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34110, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64208, ru_nivcsw=19063}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34110, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64210, ru_nivcsw=19063}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34110, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64212, ru_nivcsw=19063}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34110, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64214, ru_nivcsw=19063}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34110, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64216, ru_nivcsw=19063}) = 0
[ 7f56a5677742] select(12, [11], [11], NULL, NULL) = 1 (out [11])
[ 7f56a567722c] writev(11, [{"\2\0\4\0\25\0\200\3\0@\0\0\23\0\200\3+\0\1\0"..., 20}, {NULL, 0}, {""..., 0}], 3) = 20
[ 7f56a5677742] select(12, [11], [], NULL, NULL) = 1 (in [11])
[ 7f56a5670f4b] read(11, "\1\1*\7\0\0\0\0\3\0\200\3\0\0\0\0000\372\240\1\0\0 \0\0\0\0\0\0\0\0\0\0"..., 4096) = 32
[ 7f56a5670f4b] read(11, 0x1c85e44, 4096) = -1 EAGAIN (Resource temporarily unavailable)
[ 7f56a5670f4b] read(11, 0x1c85e44, 4096) = -1 EAGAIN (Resource temporarily unavailable)
[ 7f56a5677742] select(12, [11], NULL, NULL, {0, 0}) = 0 (Timeout)
[ 7f56a5670f4b] read(15, 0x7f569db5c000, 4096) = -1 EAGAIN (Resource temporarily unavailable)
[SNIP]
[ 7f56a60f3c89] getpid() = 10468
[ 7f56a60f3c89] getpid() = 10468
[ 7f56a60f3c89] getpid() = 10468
[ 7f56a5670b5b] open("/proc/meminfo", O_RDONLY) = 22
[ 7f56a5670284] fstat(22, {st_dev=makedev(0, 3), st_ino=4026531984, st_mode=S_IFREG|0444, st_nlink=1, st_uid=0, st_gid=0, st_blksize=1024, st_blocks=0, st_size=0, st_atime=2009/05/17-16:28:24, st_mtime=2009/05/17-16:28:24, st_ctime=2009/05/17-16:28:24}) = 0
[ 7f56a567b8da] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f56ab95d000
[ 7f56a5670f4b] read(22, "MemTotal: 978628 kB\nMemFr"..., 1024) = 1024
[ 7f56a5670f4b] read(22, "12 kB\nDirectMap2M: 57344 kB"..., 1024) = 34
[ 7f56a5670f4b] read(22, ""..., 1024) = 0
[ 7f56a5670f4b] read(22, ""..., 1024) = 0
[ 7f56a5670ea0] close(22) = 0
[ 7f56a567b907] munmap(0x7f56ab95d000, 4096) = 0
[ 7f56a60f3c89] getpid() = 10468
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34111, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64288, ru_nivcsw=19064}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34111, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64290, ru_nivcsw=19064}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34111, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64292, ru_nivcsw=19064}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34111, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64294, ru_nivcsw=19064}) = 0
[ 7f56a5676687] getrusage(RUSAGE_SELF, {ru_utime={11, 40000}, ru_stime={28, 700000}, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=34111, ru_majflt=66, ru_nswap=0, ru_inblock=11296, ru_oublock=3672, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=64296, ru_nivcsw=19064}) = 0
[ 7f56a60f3c89] getpid() = 10468
[ 7f56a5664c57] sched_yield() = 0
[ 7f56a5664c57] sched_yield() = 0
[ 7f56a5664c57] sched_yield() = 0
[ 7f56a5664c57] sched_yield() = 0
[ 7f56a5664c57] sched_yield() = 0
[ 7f56a5664c57] sched_yield() = 0
[ 7f56a5664c57] sched_yield() = 0
[ 7f56a5664c57] sched_yield() = 0
[ 7f56a5664c57] sched_yield() = 0
[ 7f56a5664c57] sched_yield() = 0
[ 7f56a5664c57] sched_yield() = 0
And the sched_yield() calls happen thousands of times per second. Then a repeat of the calls above ad nauseum eating up a whole core. Boxee is heavier than xbmc and is just unusable. XBMC is usable at least. Boxee on OSX works OOB, but my HTPC is a 4TB Linux system which serves several other purposes (runs my dvd ripping robot etc).
BTW, I suspect something in the kernel or libc changed and something they expect will block/wait no longer does and spins on sched_yield().
The XBMC developers are rather snappy and childish so aside from try and convince them to look into this on the forums, don't expect much. The boxee and xbmc devs don't think 64 bit targets are important. It is, in the HTPC market and it will have to be dealt with eventually, but I am tired of trying to convince their teams. I am not going to waste a weeks time with gdb and debugging their code for them either because they are just that obnoxious.
*sigh*
-rr
Powered by vBulletin® Version 4.1.12 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.