You can subscribe to this list here.
| 1999 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(15) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2000 |
Jan
(6) |
Feb
(1) |
Mar
(39) |
Apr
(13) |
May
(24) |
Jun
(11) |
Jul
(23) |
Aug
(85) |
Sep
(12) |
Oct
(103) |
Nov
(79) |
Dec
(112) |
| 2001 |
Jan
(52) |
Feb
(82) |
Mar
(84) |
Apr
(65) |
May
(105) |
Jun
(188) |
Jul
(174) |
Aug
(182) |
Sep
(103) |
Oct
(137) |
Nov
(143) |
Dec
(98) |
| 2002 |
Jan
(258) |
Feb
(236) |
Mar
(386) |
Apr
(307) |
May
(238) |
Jun
(170) |
Jul
(252) |
Aug
(230) |
Sep
(278) |
Oct
(394) |
Nov
(336) |
Dec
(194) |
| 2003 |
Jan
(290) |
Feb
(182) |
Mar
(175) |
Apr
(220) |
May
(209) |
Jun
(286) |
Jul
(279) |
Aug
(164) |
Sep
(208) |
Oct
(324) |
Nov
(204) |
Dec
(380) |
| 2004 |
Jan
(344) |
Feb
(332) |
Mar
(395) |
Apr
(357) |
May
(349) |
Jun
(352) |
Jul
(279) |
Aug
(269) |
Sep
(374) |
Oct
(442) |
Nov
(428) |
Dec
(253) |
| 2005 |
Jan
(225) |
Feb
(219) |
Mar
(245) |
Apr
(249) |
May
(203) |
Jun
(157) |
Jul
(171) |
Aug
(194) |
Sep
(200) |
Oct
(232) |
Nov
(190) |
Dec
(195) |
| 2006 |
Jan
(158) |
Feb
(190) |
Mar
(235) |
Apr
(161) |
May
(134) |
Jun
(169) |
Jul
(117) |
Aug
(161) |
Sep
(170) |
Oct
(297) |
Nov
(230) |
Dec
(205) |
| 2007 |
Jan
(197) |
Feb
(132) |
Mar
(151) |
Apr
(97) |
May
(109) |
Jun
(99) |
Jul
(57) |
Aug
(110) |
Sep
(56) |
Oct
(119) |
Nov
(39) |
Dec
(45) |
| 2008 |
Jan
(101) |
Feb
(116) |
Mar
(141) |
Apr
(98) |
May
(133) |
Jun
(61) |
Jul
(43) |
Aug
(76) |
Sep
(20) |
Oct
(32) |
Nov
(22) |
Dec
(41) |
| 2009 |
Jan
(35) |
Feb
(15) |
Mar
(18) |
Apr
(13) |
May
(13) |
Jun
(26) |
Jul
(12) |
Aug
(32) |
Sep
(21) |
Oct
(41) |
Nov
(35) |
Dec
(12) |
| 2010 |
Jan
(3) |
Feb
(35) |
Mar
(28) |
Apr
(20) |
May
(5) |
Jun
(14) |
Jul
(6) |
Aug
(8) |
Sep
(20) |
Oct
(20) |
Nov
(10) |
Dec
(12) |
| 2011 |
Jan
(14) |
Feb
(10) |
Mar
(14) |
Apr
(14) |
May
(13) |
Jun
(43) |
Jul
(13) |
Aug
(50) |
Sep
(30) |
Oct
(23) |
Nov
(15) |
Dec
(49) |
| 2012 |
Jan
(15) |
Feb
(28) |
Mar
(7) |
Apr
|
May
(12) |
Jun
(13) |
Jul
(28) |
Aug
(11) |
Sep
(19) |
Oct
(27) |
Nov
(5) |
Dec
(25) |
| 2013 |
Jan
(18) |
Feb
(19) |
Mar
(56) |
Apr
(26) |
May
(38) |
Jun
(24) |
Jul
(42) |
Aug
(24) |
Sep
(4) |
Oct
(3) |
Nov
(18) |
Dec
(4) |
| 2014 |
Jan
(10) |
Feb
(9) |
Mar
(3) |
Apr
|
May
(12) |
Jun
(34) |
Jul
(8) |
Aug
(18) |
Sep
(3) |
Oct
(27) |
Nov
(2) |
Dec
(1) |
| 2015 |
Jan
|
Feb
(10) |
Mar
(49) |
Apr
(2) |
May
(4) |
Jun
(7) |
Jul
(1) |
Aug
(17) |
Sep
(7) |
Oct
(35) |
Nov
(40) |
Dec
(4) |
| 2016 |
Jan
(9) |
Feb
|
Mar
(6) |
Apr
|
May
(10) |
Jun
(2) |
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
|
Dec
(1) |
| 2017 |
Jan
(2) |
Feb
(4) |
Mar
(1) |
Apr
(4) |
May
(31) |
Jun
(9) |
Jul
(1) |
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
(2) |
| 2018 |
Jan
|
Feb
|
Mar
(1) |
Apr
(4) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Dmitry P. <dmi...@ya...> - 2011-11-29 18:44:43
|
Hi guys,
I'm having an issue with swapoff which gets killed by OOM. I was able to
reproduce it with UML guests running different kernel versions, starting
from 2.6.26 to 3.1.3. The only difference is with latest kernels
sometimes it crashes instead of being killed. I haven't seen it on
'native' kernels so I guess it's UML specific.
Richard, I know I mentioned on the IRC yesterday that it was fine with
2.6.37, but I was wrong.
Basically this is the command line to start UML:
/usr/local/sbin/linux32.uml mem=160m elevator=noop
ubda=/home/uml/machines/static-fe02/root_cow.img,/opt/uml/shared/ia32_squeeze/images/root01.img
ubdb=swap.img root=/dev/ubda con0=fd:0,fd:1 con=pty
eth0=daemon,de:00:00:00:00:08,unix,/var/run/uml-utilities/uml_switch.ctl
umid=static-fe02 uml_dir=/root/.uml hostfs=/var/uml
swap.img is a solid file, 360M in size. Then inside the VM I ran the
following perl script:
#!/usr/bin/perl
my @a;
print "Filling...\n";
my $i = 0;
while ($i < 20000000) {
push @a, 1;
$i++;
}
print "Done.\n";
There is nothing magical about this script, it just makes sure some swap
is being used after it finishes.
static-fe02:~# free
total used free shared buffers cached
Mem: 158468 8524 149944 0 136 4016
-/+ buffers/cache: 4372 154096
Swap: 327672 2344 325328
There should be enough RAM to clear the swap, right? However if I run
swapoff -a, I get this:
swapoff invoked oom-killer: gfp_mask=0x1200d2, order=0, oomkilladj=0
1294cd74: [<081ea1a9>] dump_stack+0x1c/0x20
1294cd8c: [<08095712>] oom_kill_process+0x4b/0x166
1294cdb8: [<08095bcb>] out_of_memory+0x151/0x17e
1294cdf0: [<08097abf>] __alloc_pages_internal+0x299/0x33f
1294ce48: [<08097b8e>] __alloc_pages+0x13/0x15
1294ce54: [<080a506a>] read_swap_cache_async+0x40/0xab
1294ce7c: [<080a6583>] sys_swapoff+0x1ea/0x774
1294cf28: [<0805b017>] handle_syscall+0x7b/0x98
1294cf78: [<08068f72>] userspace+0x2cd/0x374
1294cfe0: [<08058d2b>] fork_handler+0x53/0x5b
1294cffc: [<00000000>] 0x0
Mem-info:
Normal per-cpu:
CPU 0: hi: 42, btch: 7 usd: 35
Active:200 inactive:1 dirty:0 writeback:0 unstable:0
free:456 slab:38427 mapped:0 pagetables:49 bounce:0
Normal free:1824kB min:1680kB low:2100kB high:2520kB active:800kB
inactive:4kB present:177112kB pages_scanned:422 all_unreclaimable? no
lowmem_reserve[]: 0 0
Normal: 42*4kB 1*8kB 1*16kB 1*32kB 1*64kB 0*128kB 0*256kB 1*512kB
1*1024kB 0*2048kB 0*4096kB = 1824kB
22 total pagecache pages
Swap cache: add 802082, delete 802082, find 30288/37816
Free swap = 4294965488kB
Total swap = 0kB
Free swap: -1808kB
44627 pages of RAM
0 pages of HIGHMEM
5010 reserved pages
20 pages shared
0 pages swap cached
Out of memory: kill process 646 (swapoff) score -1 or a child
Killed process 646 (swapoff)
Can anybody reproduce this?
Best regards,
--
Dmitry Panov
|
|
From: Cong W. <am...@re...> - 2011-11-27 05:30:33
|
Signed-off-by: Cong Wang <am...@re...> --- arch/um/kernel/skas/uaccess.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/um/kernel/skas/uaccess.c b/arch/um/kernel/skas/uaccess.c index 9fefd92..cd7df79 100644 --- a/arch/um/kernel/skas/uaccess.c +++ b/arch/um/kernel/skas/uaccess.c @@ -69,7 +69,7 @@ static int do_op_one_page(unsigned long addr, int len, int is_write, return -1; page = pte_page(*pte); - addr = (unsigned long) kmap_atomic(page, KM_UML_USERCOPY) + + addr = (unsigned long) kmap_atomic(page) + (addr & ~PAGE_MASK); current->thread.fault_catcher = &buf; @@ -82,7 +82,7 @@ static int do_op_one_page(unsigned long addr, int len, int is_write, current->thread.fault_catcher = NULL; - kunmap_atomic((void *)addr, KM_UML_USERCOPY); + kunmap_atomic((void *)addr); return n; } -- 1.7.4.4 |
|
From: Lakshmipathi.G <lak...@gm...> - 2011-11-17 02:45:12
|
Hi - If I'm not wrong , you should provide rootfs as an argument - ./linux ubda=/path/to/rootfs If that didn't work,please post the exact compilation steps and exact error messages. -- ---- Cheers, Lakshmipathi.G FOSS Programmer. www.giis.co.in On Wed, Nov 16, 2011 at 8:42 PM, mattias <mj...@mj...> wrote: > ** > i compile um on centos 5.7 and try > ./linux > but the only thing are > > segmentation fault > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure > contains a definitive record of customers, application performance, > security threats, fraudulent activity, and more. Splunk takes this > data and makes sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-novd2d > _______________________________________________ > User-mode-linux-user mailing list > Use...@li... > https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user > > |
|
From: mattias <mj...@mj...> - 2011-11-16 15:12:40
|
i compile um on centos 5.7 and try ./linux but the only thing are segmentation fault |
|
From: Yong Z. <yon...@gm...> - 2011-10-28 11:51:35
|
On Fri, Oct 28, 2011 at 12:54:35PM +0200, Richard Weinberger wrote: > Am 22.10.2011 11:56, schrieb Yong Zhang: > > Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled], > > We run all interrupt handlers with interrupts disabled > > and we even check and yell when an interrupt handler > > returns with interrupts enabled (see commit [b738a50a: > > genirq: Warn when handler enables interrupts]). > > > > So now this flag is a NOOP and can be removed. > > > > Signed-off-by: Yong Zhang <yon...@gm...> > > Acked-by: Richard Weinberger <ri...@no...> > > BTW: I think it's better when I carry this patch through my UML tree. > Okay? Good :) Thanks, Yong |
|
From: Richard W. <ri...@no...> - 2011-10-28 10:54:46
|
Am 22.10.2011 11:56, schrieb Yong Zhang: > Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled], > We run all interrupt handlers with interrupts disabled > and we even check and yell when an interrupt handler > returns with interrupts enabled (see commit [b738a50a: > genirq: Warn when handler enables interrupts]). > > So now this flag is a NOOP and can be removed. > > Signed-off-by: Yong Zhang <yon...@gm...> > Acked-by: Richard Weinberger <ri...@no...> BTW: I think it's better when I carry this patch through my UML tree. Okay? Thanks, //richard |
|
From: Luca S. <Luc...@li...> - 2011-10-24 17:43:08
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 10/24/2011 06:47 PM, richard -rw- weinberger wrote: > Try: > > make linux ARCH=um SUBARCH=i386 I didn't know SUBARCH; silly me. Thanks for your quick response! :-) - -- Luca Saiu http://www-lipn.univ-paris13.fr/~saiu GNU epsilon: http://www.gnu.org/software/epsilon Marionnet: http://www.marionnet.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk6lo1wACgkQvzOavibF0oZlcACcDBAjQLUnplMTMFqgK7pV4dIS xN4AoIfFf5CJuG1mZ/ui7dcuqr913ttV =cTkE -----END PGP SIGNATURE----- |
|
From: richard -r. w. <ric...@gm...> - 2011-10-24 16:47:35
|
On Mon, Oct 24, 2011 at 4:42 PM, Luca Saiu <Luc...@li...> wrote: > Sorry for asking such an obvious question, but we couldn't find any > information on the official documentation: how do we cross-compile a UML > kernel for a 32-bit x86 machine on an x86-64 machine? > Try: make linux ARCH=um SUBARCH=i386 -- Thanks, //richard |
|
From: Luca S. <Luc...@li...> - 2011-10-24 15:02:50
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, we are the developers of Marionnet (http://www.marionnet.org). Sorry for asking such an obvious question, but we couldn't find any information on the official documentation: how do we cross-compile a UML kernel for a 32-bit x86 machine on an x86-64 machine? Since from the point of view of the kernel build system UML is an architecture, I couldn't find a way of specifying the actual *CPU* architecture to use: I tried to pass -m32 within the CFLAGS, but that doesn't suffice: in the end we get errors such as ake: *** [arch/um/os-Linux] Error 2 arch/um/sys-i386/setjmp.S: Assembler messages: arch/um/sys-i386/setjmp.S:27: Error: invalid instruction suffix for `pop' arch/um/sys-i386/setjmp.S:31: Error: invalid instruction suffix for `push' make[1]: *** [arch/um/sys-i386/setjmp.o] Error 1 arch/um/sys-i386/stub.S: Assembler messages: arch/um/sys-i386/stub.S:28: Error: operand type mismatch for `pop' arch/um/sys-i386/stub.S:31: Error: operand type mismatch for `pop' arch/um/sys-i386/stub.S:32: Error: operand type mismatch for `pop' arch/um/sys-i386/stub.S:33: Error: operand type mismatch for `pop' arch/um/sys-i386/stub.S:34: Error: operand type mismatch for `pop' arch/um/sys-i386/stub.S:35: Error: operand type mismatch for `pop' arch/um/sys-i386/stub.S:36: Error: operand type mismatch for `pop' arch/um/sys-i386/stub.S:42: Error: operand type mismatch for `pop' , showing that at least some data width mismatch still happens. Notice that the error is at compile time, rather than link time. I'm sure a clean solution exists, but I can't seem to find it at the moment; I suppose it should also be a frequent question... Thanks for your time (and for UML), - -- Luca Saiu http://www-lipn.univ-paris13.fr/~saiu GNU epsilon: http://www.gnu.org/software/epsilon Marionnet: http://www.marionnet.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk6leXIACgkQvzOavibF0obb2wCfc6pIMDRjCo+5r2hGiRLdTB3u pKEAoIsPLoQ3p0QI4tdyFM6a6eQwx5tv =VgfJ -----END PGP SIGNATURE----- |
|
From: Yong Z. <yon...@gm...> - 2011-10-22 10:06:35
|
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).
So now this flag is a NOOP and can be removed.
Signed-off-by: Yong Zhang <yon...@gm...>
Acked-by: Richard Weinberger <ri...@no...>
---
arch/um/drivers/line.c | 8 ++++----
arch/um/drivers/mconsole_kern.c | 2 +-
arch/um/drivers/net_kern.c | 2 +-
arch/um/drivers/port_kern.c | 4 ++--
arch/um/drivers/random.c | 2 +-
arch/um/drivers/ubd_kern.c | 2 +-
arch/um/drivers/xterm_kern.c | 2 +-
arch/um/kernel/sigio.c | 2 +-
arch/um/kernel/time.c | 2 +-
9 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index 364c8a1..d38f475 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -347,8 +347,8 @@ static irqreturn_t line_write_interrupt(int irq, void *data)
int err;
/*
- * Interrupts are disabled here because we registered the interrupt with
- * IRQF_DISABLED (see line_setup_irq).
+ * Interrupts are disabled here because genirq keep irqs disabled when
+ * calling the action handler.
*/
spin_lock(&line->lock);
@@ -371,7 +371,7 @@ static irqreturn_t line_write_interrupt(int irq, void *data)
int line_setup_irq(int fd, int input, int output, struct line *line, void *data)
{
const struct line_driver *driver = line->driver;
- int err = 0, flags = IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM;
+ int err = 0, flags = IRQF_SHARED | IRQF_SAMPLE_RANDOM;
if (input)
err = um_request_irq(driver->read_irq, fd, IRQ_READ,
@@ -807,7 +807,7 @@ void register_winch_irq(int fd, int tty_fd, int pid, struct tty_struct *tty,
.stack = stack });
if (um_request_irq(WINCH_IRQ, fd, IRQ_READ, winch_interrupt,
- IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM,
+ IRQF_SHARED | IRQF_SAMPLE_RANDOM,
"winch", winch) < 0) {
printk(KERN_ERR "register_winch_irq - failed to register "
"IRQ\n");
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c
index c70e047..e672bd6 100644
--- a/arch/um/drivers/mconsole_kern.c
+++ b/arch/um/drivers/mconsole_kern.c
@@ -773,7 +773,7 @@ static int __init mconsole_init(void)
register_reboot_notifier(&reboot_notifier);
err = um_request_irq(MCONSOLE_IRQ, sock, IRQ_READ, mconsole_interrupt,
- IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM,
+ IRQF_SHARED | IRQF_SAMPLE_RANDOM,
"mconsole", (void *)sock);
if (err) {
printk(KERN_ERR "Failed to get IRQ for management console\n");
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c
index a492e59..46ffd65 100644
--- a/arch/um/drivers/net_kern.c
+++ b/arch/um/drivers/net_kern.c
@@ -161,7 +161,7 @@ static int uml_net_open(struct net_device *dev)
}
err = um_request_irq(dev->irq, lp->fd, IRQ_READ, uml_net_interrupt,
- IRQF_DISABLED | IRQF_SHARED, dev->name, dev);
+ IRQF_SHARED, dev->name, dev);
if (err != 0) {
printk(KERN_ERR "uml_net_open: failed to get irq(%d)\n", err);
err = -ENETUNREACH;
diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c
index a11573b..e31680e 100644
--- a/arch/um/drivers/port_kern.c
+++ b/arch/um/drivers/port_kern.c
@@ -100,7 +100,7 @@ static int port_accept(struct port_list *port)
.port = port });
if (um_request_irq(TELNETD_IRQ, socket[0], IRQ_READ, pipe_interrupt,
- IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM,
+ IRQF_SHARED | IRQF_SAMPLE_RANDOM,
"telnetd", conn)) {
printk(KERN_ERR "port_accept : failed to get IRQ for "
"telnetd\n");
@@ -184,7 +184,7 @@ void *port_data(int port_num)
}
if (um_request_irq(ACCEPT_IRQ, fd, IRQ_READ, port_interrupt,
- IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM,
+ IRQF_SHARED | IRQF_SAMPLE_RANDOM,
"port", port)) {
printk(KERN_ERR "Failed to get IRQ for port %d\n", port_num);
goto out_close;
diff --git a/arch/um/drivers/random.c b/arch/um/drivers/random.c
index 981085a..b25296e 100644
--- a/arch/um/drivers/random.c
+++ b/arch/um/drivers/random.c
@@ -131,7 +131,7 @@ static int __init rng_init (void)
random_fd = err;
err = um_request_irq(RANDOM_IRQ, random_fd, IRQ_READ, random_interrupt,
- IRQF_DISABLED | IRQF_SAMPLE_RANDOM, "random",
+ IRQF_SAMPLE_RANDOM, "random",
NULL);
if (err)
goto err_out_cleanup_hw;
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index 620f5b7..c9dae89 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -1088,7 +1088,7 @@ static int __init ubd_driver_init(void){
return 0;
}
err = um_request_irq(UBD_IRQ, thread_fd, IRQ_READ, ubd_intr,
- IRQF_DISABLED, "ubd", ubd_devs);
+ 0, "ubd", ubd_devs);
if(err != 0)
printk(KERN_ERR "um_request_irq failed - errno = %d\n", -err);
return 0;
diff --git a/arch/um/drivers/xterm_kern.c b/arch/um/drivers/xterm_kern.c
index b646bcc..8bd130f 100644
--- a/arch/um/drivers/xterm_kern.c
+++ b/arch/um/drivers/xterm_kern.c
@@ -50,7 +50,7 @@ int xterm_fd(int socket, int *pid_out)
init_completion(&data->ready);
err = um_request_irq(XTERM_IRQ, socket, IRQ_READ, xterm_interrupt,
- IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM,
+ IRQF_SHARED | IRQF_SAMPLE_RANDOM,
"xterm", data);
if (err) {
printk(KERN_ERR "xterm_fd : failed to get IRQ for xterm, "
diff --git a/arch/um/kernel/sigio.c b/arch/um/kernel/sigio.c
index 2b272b6..2a16392 100644
--- a/arch/um/kernel/sigio.c
+++ b/arch/um/kernel/sigio.c
@@ -25,7 +25,7 @@ int write_sigio_irq(int fd)
int err;
err = um_request_irq(SIGIO_WRITE_IRQ, fd, IRQ_READ, sigio_interrupt,
- IRQF_DISABLED|IRQF_SAMPLE_RANDOM, "write sigio",
+ IRQF_SAMPLE_RANDOM, "write sigio",
NULL);
if (err) {
printk(KERN_ERR "write_sigio_irq : um_request_irq failed, "
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index a08d9fa..9149b5f 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -84,7 +84,7 @@ static void __init setup_itimer(void)
{
int err;
- err = request_irq(TIMER_IRQ, um_timer, IRQF_DISABLED, "timer", NULL);
+ err = request_irq(TIMER_IRQ, um_timer, 0, "timer", NULL);
if (err != 0)
printk(KERN_ERR "register_timer : request_irq failed - "
"errno = %d\n", -err);
--
1.7.1
|
|
From: Bernd P. <be...@pe...> - 2011-10-14 10:39:56
|
Ooops, sorry, forget the full CC:
On Fre, 2011-10-14 at 11:51 +0200, Richard Weinberger wrote:
> Am 14.10.2011 07:29, schrieb mi...@mi...:
> > I have attached the trace below, if you are interested. It happened
> > during/after /sbin/init was executed. Version is
> > f2c0d0266cc5eb36a4aa44944b4096ec121490aa of linus'es git tree. However,
> > everything is running now. It was caused by uncleaned files. I am just
> > reporting, because this was suprising to me.
[....]
> >> "make clean ARCH=um" works fine on my system.
> >
> > Yes, the point is "ARCH=um". I do not really understand why it is needed for
> > clean operations?
>
> Otherwise kbuild will use x86 as arch.
The question is IMHO more in the direction of:
Shouldn't `make mrproper` delete *all* generated files from all
architectures (and not only the current one) to get the tree in a (or
actually the) pristine state?
Hmm, how are other arches handling that?
Bernd
--
Bernd Petrovitsch Email : be...@pe...
LUGA : http://www.luga.at
|
|
From: Bernd P. <be...@pe...> - 2011-10-14 10:39:51
|
On Fre, 2011-10-14 at 11:51 +0200, Richard Weinberger wrote:
> Am 14.10.2011 07:29, schrieb mi...@mi...:
> > I have attached the trace below, if you are interested. It happened
> > during/after /sbin/init was executed. Version is
> > f2c0d0266cc5eb36a4aa44944b4096ec121490aa of linus'es git tree. However,
> > everything is running now. It was caused by uncleaned files. I am just
> > reporting, because this was suprising to me.
[....]
> >> "make clean ARCH=um" works fine on my system.
> >
> > Yes, the point is "ARCH=um". I do not really understand why it is needed for
> > clean operations?
>
> Otherwise kbuild will use x86 as arch.
The question is IMHO more in the direction of:
Shouldn't `make mrproper` delete *all* generated files from all
architectures (and not only the current one) to get the tree in a (or
actually the) pristine state?
Hmm, how are other arches handling that?
Bernd
--
Bernd Petrovitsch Email : be...@pe...
LUGA : http://www.luga.at
|
|
From: Richard W. <ri...@no...> - 2011-10-14 10:32:38
|
Am 14.10.2011 12:08, schrieb Bernd Petrovitsch: > The question is IMHO more in the direction of: > Shouldn't `make mrproper` delete *all* generated files from all > architectures (and not only the current one) to get the tree in a (or > actually the) pristine state? To achieve this the Makefile needs some patching. All make targets operate only on one arch. > Hmm, how are other arches handling that? > mrproper is not arch specific. Thanks, //richard |
|
From: Richard W. <ri...@no...> - 2011-10-14 09:51:41
|
Am 14.10.2011 07:29, schrieb mi...@mi...: > I have attached the trace below, if you are interested. It happened > during/after /sbin/init was executed. Version is > f2c0d0266cc5eb36a4aa44944b4096ec121490aa of linus'es git tree. However, > everything is running now. It was caused by uncleaned files. I am just > reporting, because this was suprising to me. Okay. >> "make clean ARCH=um" works fine on my system. > > Yes, the point is "ARCH=um". I do not really understand why it is needed for > clean operations? Otherwise kbuild will use x86 as arch. Sorry, your trace is useless. You have to ignore SIGSEGV. UML is using it do detect page faults. Thanks, //richard |
|
From: <mi...@mi...> - 2011-10-14 05:29:43
|
Hi!
On 20:47 Thu 13 Oct , Richard Weinberger wrote:
> Am 13.10.2011 20:10, schrieb mi...@mi...:
> > After migrating from i386 to x86_64, my uml started to segfault in weird ways.
>
> What exactly is the problem?
> Without any details nobody can and will help you.
I have attached the trace below, if you are interested. It happened
during/after /sbin/init was executed. Version is
f2c0d0266cc5eb36a4aa44944b4096ec121490aa of linus'es git tree. However,
everything is running now. It was caused by uncleaned files. I am just
reporting, because this was suprising to me.
> > In the end, I figured that "make clean/mrproper/distclean" does not really
> > clean up properly. I had to use "ARCH=um make distclean". The command "make
> > distclean" did not remove these files:
> >
> > arch/um/include/shared/kern_constants.h
> > arch/um/include/shared/user_constants.h
> > arch/um/kernel/config.c
> > arch/um/kernel/config.tmp
> > arch/um/kernel/vmlinux.lds
> > arch/um/sys-x86_64/vdso/vdso.lds
> > arch/um/sys-x86_64/vdso/vdso.so
> > arch/um/sys-x86_64/vdso/vdso.so.dbg
> > arch/um/sys-x86_64/vdso/vdso-syms.lds
> >
>
> "make clean ARCH=um" works fine on my system.
Yes, the point is "ARCH=um". I do not really understand why it is needed for
clean operations?
trace:
$ gdb --args ./linux ubda=root.img
Core dump limits :
soft - 0
hard - NONE
Checking that ptrace can change system call numbers...OK
Checking syscall emulation patch for ptrace...OK
Checking advanced syscall emulation patch for ptrace...OK
Checking for tmpfs mount on /dev/shm...nothing mounted on /dev/shm
Checking PROT_EXEC mmap in /tmp/...OK
Checking for the skas3 patch in the host:
- /proc/mm...not found: No such file or directory
- PTRACE_FAULTINFO...not found
- PTRACE_LDT...not found
UML running in SKAS0 mode
Adding 22114304 bytes to physical memory to account for exec-shield gap
Initializing cgroup subsys cpu
Linux version 3.1.0-rc1-106673-g7208f79-dirty (michi@grml) (gcc version 4.4.5 (Debian 4.4.5-8) ) #1570 Thu Oct 13 18:43:52 CEST 2011
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 13405
Kernel command line: ubda=root.img root=98:0
PID hash table entries: 256 (order: -1, 2048 bytes)
Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)
Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
Memory: 27880k available
NR_IRQS:15
------------------------
| Locking API testsuite:
----------------------------------------------------------------------------
| spin |wlock |rlock |mutex | wsem | rsem |
--------------------------------------------------------------------------
A-A deadlock:failed|failed| ok |failed|failed|failed|
A-B-B-A deadlock:failed|failed| ok |failed|failed|failed|
A-B-B-C-C-A deadlock:failed|failed| ok |failed|failed|failed|
A-B-C-A-B-C deadlock:failed|failed| ok |failed|failed|failed|
A-B-B-C-C-D-D-A deadlock:failed|failed| ok |failed|failed|failed|
A-B-C-D-B-D-D-A deadlock:failed|failed| ok |failed|failed|failed|
A-B-C-D-B-C-D-A deadlock:failed|failed| ok |failed|failed|failed|
double unlock:failed|failed|failed| ok |failed|failed|
initialize held:failed|failed|failed|failed|failed|failed|
bad unlock order: ok | ok | ok | ok | ok | ok |
--------------------------------------------------------------------------
recursive read-lock: | ok | |failed|
recursive read-lock #2: | ok | |failed|
mixed read-write-lock: |failed| |failed|
mixed write-read-lock: |failed| |failed|
--------------------------------------------------------------------------
hard-irqs-on + irq-safe-A/12:failed|failed| ok |
soft-irqs-on + irq-safe-A/12:failed|failed| ok |
hard-irqs-on + irq-safe-A/21:failed|failed| ok |
soft-irqs-on + irq-safe-A/21:failed|failed| ok |
sirq-safe-A => hirqs-on/12:failed|failed| ok |
sirq-safe-A => hirqs-on/21:failed|failed| ok |
hard-safe-A + irqs-on/12:failed|failed| ok |
soft-safe-A + irqs-on/12:failed|failed| ok |
hard-safe-A + irqs-on/21:failed|failed| ok |
soft-safe-A + irqs-on/21:failed|failed| ok |
hard-safe-A + unsafe-B #1/123:failed|failed| ok |
soft-safe-A + unsafe-B #1/123:failed|failed| ok |
hard-safe-A + unsafe-B #1/132:failed|failed| ok |
soft-safe-A + unsafe-B #1/132:failed|failed| ok |
hard-safe-A + unsafe-B #1/213:failed|failed| ok |
soft-safe-A + unsafe-B #1/213:failed|failed| ok |
hard-safe-A + unsafe-B #1/231:failed|failed| ok |
soft-safe-A + unsafe-B #1/231:failed|failed| ok |
hard-safe-A + unsafe-B #1/312:failed|failed| ok |
soft-safe-A + unsafe-B #1/312:failed|failed| ok |
hard-safe-A + unsafe-B #1/321:failed|failed| ok |
soft-safe-A + unsafe-B #1/321:failed|failed| ok |
hard-safe-A + unsafe-B #2/123:failed|failed| ok |
soft-safe-A + unsafe-B #2/123:failed|failed| ok |
hard-safe-A + unsafe-B #2/132:failed|failed| ok |
soft-safe-A + unsafe-B #2/132:failed|failed| ok |
hard-safe-A + unsafe-B #2/213:failed|failed| ok |
soft-safe-A + unsafe-B #2/213:failed|failed| ok |
hard-safe-A + unsafe-B #2/231:failed|failed| ok |
soft-safe-A + unsafe-B #2/231:failed|failed| ok |
hard-safe-A + unsafe-B #2/312:failed|failed| ok |
soft-safe-A + unsafe-B #2/312:failed|failed| ok |
hard-safe-A + unsafe-B #2/321:failed|failed| ok |
soft-safe-A + unsafe-B #2/321:failed|failed| ok |
hard-irq lock-inversion/123:failed|failed| ok |
soft-irq lock-inversion/123:failed|failed| ok |
hard-irq lock-inversion/132:failed|failed| ok |
soft-irq lock-inversion/132:failed|failed| ok |
hard-irq lock-inversion/213:failed|failed| ok |
soft-irq lock-inversion/213:failed|failed| ok |
hard-irq lock-inversion/231:failed|failed| ok |
soft-irq lock-inversion/231:failed|failed| ok |
hard-irq lock-inversion/312:failed|failed| ok |
soft-irq lock-inversion/312:failed|failed| ok |
hard-irq lock-inversion/321:failed|failed| ok |
soft-irq lock-inversion/321:failed|failed| ok |
hard-irq read-recursion/123: ok |
soft-irq read-recursion/123: ok |
hard-irq read-recursion/132: ok |
soft-irq read-recursion/132: ok |
hard-irq read-recursion/213: ok |
soft-irq read-recursion/213: ok |
hard-irq read-recursion/231: ok |
soft-irq read-recursion/231: ok |
hard-irq read-recursion/312: ok |
soft-irq read-recursion/312: ok |
hard-irq read-recursion/321: ok |
soft-irq read-recursion/321: ok |
--------------------------------------------------------
144 out of 218 testcases failed, as expected. |
----------------------------------------------------
Calibrating delay loop... 967.47 BogoMIPS (lpj=4837376)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 256
Initializing cgroup subsys blkio
Checking that host ptys support output SIGIO...Yes
Checking that host ptys support SIGIO on close...No, enabling workaround
Using 2.6 host AIO
NET: Registered protocol family 16
bio: create slab <bio-0> at 0
Switching to clocksource itimer
NET: Registered protocol family 1
mconsole (version 2) initialized on /home/michi/.uml/CkIDmD/mconsole
Checking host MADV_REMOVE support...
MADV_REMOVE failed, err = -38
Can't release memory to the host - memory hotplug won't be supported
VFS: Disk quotas dquot_6.5.2
Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
msgmni has been set to 55
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
loop: module loaded
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <ma...@qu...>
NET: Registered protocol family 17
Initialized stdio console driver
Console initialized on /dev/tty0
Switched to NOHz mode on CPU #0
console [tty0] enabled
Initializing software serial port version 1
console [mc-1] enabled
ubda: unknown partition table
kjournald starting. Commit interval 5 seconds
EXT3-fs (ubda): mounted filesystem with writeback data mode
VFS: Mounted root (ext3 filesystem) readonly on device 98:0.
Program received signal SIGSEGV, Segmentation fault.
bio_list_add (bio=0x61c5ba40) at include/linux/bio.h:414
414 if (bl->tail)
(gdb) backtrace
#0 bio_list_add (bio=0x61c5ba40) at include/linux/bio.h:414
#1 generic_make_request (bio=0x61c5ba40) at block/blk-core.c:1574
#2 0x000000006015c27d in submit_bio (rw=2, bio=0x61c5ba40) at block/blk-core.c:1645
#3 0x00000000600ccff3 in submit_bh (rw=0, bh=0x61808130) at fs/buffer.c:2946
#4 0x00000000600d0e83 in __bread_slow (bdev=<value optimized out>, block=<value optimized out>, size=<value optimized out>)
at fs/buffer.c:1220
#5 __bread (bdev=<value optimized out>, block=<value optimized out>, size=<value optimized out>) at fs/buffer.c:1413
#6 0x000000006012a0c0 in sb_bread (inode=<value optimized out>, depth=1, offsets=0x61c224d0, chain=0x61c22470, err=0x61c224fc)
at include/linux/buffer_head.h:289
#7 ext3_get_branch (inode=<value optimized out>, depth=1, offsets=0x61c224d0, chain=0x61c22470, err=0x61c224fc) at fs/ext3/inode.c:428
#8 0x000000006012affc in ext3_get_blocks_handle (handle=<value optimized out>, inode=0x6180d740, iblock=<value optimized out>,
maxblocks=<value optimized out>, bh_result=<value optimized out>, create=0) at fs/ext3/inode.c:880
#9 0x000000006012b5f4 in ext3_get_block (inode=0x6180d740, iblock=14, bh_result=0x61c226b0, create=16843009) at fs/ext3/inode.c:1038
#10 0x00000000600d729d in do_mpage_readpage (bio=0x61808198, page=<value optimized out>, nr_pages=<value optimized out>,
last_block_in_bio=<value optimized out>, map_bh=0x61c226b0, first_logical_block=0x101010101010101, get_block=0x6012b530 <ext3_get_block>)
at fs/mpage.c:219
#11 0x00000000600d773a in mpage_readpages (mapping=0x6180d878, pages=0x61c22880, nr_pages=18, get_block=<value optimized out>)
at fs/mpage.c:387
#12 0x000000006012a986 in ext3_readpages (file=<value optimized out>, mapping=0x61c5ba40, pages=0x61c5ba40, nr_pages=0)
at fs/ext3/inode.c:1804
#13 0x0000000060081996 in read_pages (mapping=0x6180d878, filp=<value optimized out>, pages=0x61c22880, nr_pages=18) at mm/readahead.c:119
#14 0x0000000060081b94 in __do_page_cache_readahead (mapping=<value optimized out>, filp=<value optimized out>, offset=14,
nr_to_read=<value optimized out>, lookahead_size=<value optimized out>) at mm/readahead.c:199
#15 0x0000000060081bfc in ra_submit (ra=<value optimized out>, mapping=0x2, filp=0x61c5ba40) at mm/readahead.c:256
#16 0x0000000060079869 in do_sync_mmap_readahead (vma=0x61d0b720, vmf=<value optimized out>) at mm/filemap.c:1616
#17 filemap_fault (vma=0x61d0b720, vmf=<value optimized out>) at mm/filemap.c:1681
#18 0x000000006008ebc9 in __do_fault (mm=0x61d08b80, vma=0x61d0b720, address=0, pmd=0x0, pgoff=104, flags=16843009, orig_pte=...)
at mm/memory.c:3185
#19 0x000000006008fde6 in do_linear_fault (mm=0x61c5ba40, vma=0x61d0b720, address=1075965856, pte=<value optimized out>, pmd=0x0,
flags=16843009) at mm/memory.c:3338
#20 handle_pte_fault (mm=0x61c5ba40, vma=0x61d0b720, address=1075965856, pte=<value optimized out>, pmd=0x0, flags=16843009)
at mm/memory.c:3398
#21 0x00000000600909f8 in handle_mm_fault (mm=0x61d08b80, vma=0x61d0b720, address=1075965856, flags=16843009) at mm/memory.c:3503
#22 0x00000000600164f2 in handle_page_fault (address=1075965856, ip=<value optimized out>, is_write=<value optimized out>,
is_user=<value optimized out>, code_out=0x68) at arch/um/kernel/trap.c:68
#23 0x0000000060017321 in maybe_map (addr=<value optimized out>, len=<value optimized out>, is_write=1, op=<value optimized out>,
arg=<value optimized out>) at arch/um/kernel/skas/uaccess.c:47
#24 do_op_one_page (addr=<value optimized out>, len=<value optimized out>, is_write=1, op=<value optimized out>, arg=<value optimized out>)
at arch/um/kernel/skas/uaccess.c:66
#25 0x00000000600174de in buffer_op (addr=1640348224, len=2, is_write=0, op=0, arg=0x68) at arch/um/kernel/skas/uaccess.c:97
#26 0x0000000060017674 in clear_user (mem=0x61c5ba40, len=2) at arch/um/kernel/skas/uaccess.c:227
#27 0x00000000600e5015 in padzero (elf_bss=1640348224) at fs/binfmt_elf.c:106
#28 0x00000000600e57c7 in load_elf_interp (interp_elf_ex=0x61ce5200, interpreter=<value optimized out>,
interp_map_addr=<value optimized out>, no_base=2218976) at fs/binfmt_elf.c:507
---Type <return> to continue, or q <return> to quit---
#29 0x00000000600e6636 in load_elf_binary (bprm=0x61c04280, regs=0x61c20c20) at fs/binfmt_elf.c:883
#30 0x00000000600ab8e9 in search_binary_handler (bprm=0x61c04280, regs=0x61c20c20) at fs/exec.c:1396
#31 0x00000000600ad3f7 in do_execve_common (filename=0x60227e0b "/sbin/init", argv=..., envp=..., regs=0x61c20c20) at fs/exec.c:1522
#32 0x00000000600ad4e9 in do_execve (filename=0x61c5ba40 "\340\\\016", __argv=0x61c5ba40, __envp=0x0, regs=0x0) at fs/exec.c:1569
#33 0x00000000600129b9 in execve1 (file=0x61c5ba40 "\340\\\016", argv=0x61c5ba40, env=0x0) at arch/um/kernel/exec.c:51
#34 0x0000000060012a4d in um_execve (file=0x61c5ba40 "\340\\\016", argv=0x61c5ba40, env=0x0) at arch/um/kernel/exec.c:67
#35 0x0000000060014eab in kernel_execve (filename=0x61c5ba40 "\340\\\016", argv=0x61c5ba40, envp=0x0) at arch/um/kernel/syscall.c:63
#36 0x000000006001256a in run_init_process (init_filename=0x61c5ba40 "\340\\\016") at init/main.c:739
#37 0x00000000600125ca in init_post () at init/main.c:774
#38 0x0000000060001251 in kernel_init (unused=<value optimized out>) at init/main.c:835
#39 0x0000000060024d65 in run_kernel_thread (fn=<value optimized out>, arg=<value optimized out>, jmp_ptr=<value optimized out>)
at arch/um/os-Linux/process.c:268
#40 0x0000000060013f98 in new_thread_handler () at arch/um/kernel/process.c:153
#41 0x0000000000000000 in ?? ()
(gdb) print bl->tail
Cannot access memory at address 0x8
(gdb) list
409
410 static inline void bio_list_add(struct bio_list *bl, struct bio *bio)
411 {
412 bio->bi_next = NULL;
413
414 if (bl->tail)
415 bl->tail->bi_next = bio;
416 else
417 bl->head = bio;
418
(gdb) frame 1
#1 generic_make_request (bio=0x61c5ba40) at block/blk-core.c:1574
1574 bio_list_add(current->bio_list, bio);
(gdb) list
1569 {
1570 struct bio_list bio_list_on_stack;
1571
1572 if (current->bio_list) {
1573 /* make_request is active */
1574 bio_list_add(current->bio_list, bio);
1575 return;
1576 }
1577 /* following loop may be a bit non-obvious, and so deserves some
1578 * explanation.
(gdb)
|
|
From: Richard W. <ri...@no...> - 2011-10-13 18:48:08
|
Am 13.10.2011 20:10, schrieb mi...@mi...: > After migrating from i386 to x86_64, my uml started to segfault in weird ways. What exactly is the problem? Without any details nobody can and will help you. > In the end, I figured that "make clean/mrproper/distclean" does not really > clean up properly. I had to use "ARCH=um make distclean". The command "make > distclean" did not remove these files: > > arch/um/include/shared/kern_constants.h > arch/um/include/shared/user_constants.h > arch/um/kernel/config.c > arch/um/kernel/config.tmp > arch/um/kernel/vmlinux.lds > arch/um/sys-x86_64/vdso/vdso.lds > arch/um/sys-x86_64/vdso/vdso.so > arch/um/sys-x86_64/vdso/vdso.so.dbg > arch/um/sys-x86_64/vdso/vdso-syms.lds > "make clean ARCH=um" works fine on my system. Thanks, //richard |
|
From: <mi...@mi...> - 2011-10-13 18:32:34
|
Hi! After migrating from i386 to x86_64, my uml started to segfault in weird ways. In the end, I figured that "make clean/mrproper/distclean" does not really clean up properly. I had to use "ARCH=um make distclean". The command "make distclean" did not remove these files: arch/um/include/shared/kern_constants.h arch/um/include/shared/user_constants.h arch/um/kernel/config.c arch/um/kernel/config.tmp arch/um/kernel/vmlinux.lds arch/um/sys-x86_64/vdso/vdso.lds arch/um/sys-x86_64/vdso/vdso.so arch/um/sys-x86_64/vdso/vdso.so.dbg arch/um/sys-x86_64/vdso/vdso-syms.lds Why is this the case? -Michi |
|
From: Riccardo M. <ric...@gm...> - 2011-10-13 07:34:12
|
Hi Jeff, all, On Thu, Oct 13, 2011 at 3:35 AM, Jeff Dike <jd...@ad...> wrote: > UML uses separate address spaces for its processes, thus > they don't look like threads to anything else, but the bulk of the > memory (the UML kernel) in those address spaces is shared. Is it technically feasible to modify UML so that it uses "real" threads instead? (Perhaps at the cost of giving up the real process separation in the UML and assuming processes are "good citizens".) If yes, do you think it would be at the reach of someone who has no kernel and UML hacking experience? I presume the bulk of that would be re-implementing the memory management part into UML, which is currently offloaded to the host kernel? Thanks for your help! Riccardo |
|
From: Jeff D. <jd...@ad...> - 2011-10-13 01:48:19
|
On Thu, Oct 13, 2011 at 01:37:24AM +0200, Riccardo Murri wrote: > Thus: > > - batch system schedulers do righteously consider each UML "thread" as > a separate process; > > - however, UML "threads" do share a large portion of the memory, as > can be seen from this "ps" output: > > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > 6467 admin 15 0 32.0g 13g 13g S 0.0 27.7 0:00.00 kernel64-3.0.4 > 6466 admin 16 0 32.0g 13g 13g S 0.0 27.7 0:00.15 kernel64-3.0.4 > 6465 admin 22 0 32.0g 13g 13g S 0.0 27.7 0:00.00 kernel64-3.0.4 > 6458 admin 15 0 32.0g 13g 13g S 39.2 27.7 37:00.04 kernel64-3.0.4 > 7437 admin 15 0 12.0g 12g 12g T 52.9 25.6 70:54.39 kernel64-3.0.4 > > - so the problem lies in the algorithm that SGE and TORQUE apply for > computing the amount of memory used, which apparently just sums up > the total VSZ for each process (fast), instead of counting the > number of pages while ensuring that each shared page is counted only > once (slow)? > > Thanks for any clarification! Correct on all counts (the first two anyway, and I bet you're right on the third). UML uses separate address spaces for its processes, thus they don't look like threads to anything else, but the bulk of the memory (the UML kernel) in those address spaces is shared. If you look at /proc/<pid>/smaps for a couple of UML processes, you should see the sharing. Jeff |
|
From: Riccardo M. <ric...@gm...> - 2011-10-12 23:37:34
|
Hello,
sorry for resurrecting this old thread, but I need to test my
understanding of the problem and I'd like to ask for a clarification.
On Thu, Aug 4, 2011 at 7:09 PM, richard -rw- weinberger
<ric...@gm...> wrote:
> On Thu, Aug 4, 2011 at 5:42 PM, Riccardo Murri
<ric...@gm...> wrote:
>>
>> I see that each UML instance starts a variable number of threads/processes.
>>
>> I'm using UML in a batch system (Sun Grid Engine 6.2); SGE kills my
>> jobs because they exceed the allowed memory reservation. My guess is
>> that SGE miscomputes the memory usage by computing the total over all
>> threads/processes without accounting for shared pages.
>> [...]
>
> UML starts on the host side per process one helper thread.
> (In SKAS0 mode, which is the default.)
> So, you can limit the number of host threads by starting less
> processes within UML. ;)
>
> Most likely SGE does not detect them as threads because UML uses
> clone() to create them...
Actually we've seen the same behavior also in TORQUE, so this is
becoming a major issue for us.
The question is this: I see in the libc sources that clone() is used
to create threads as well. So I guess the difference is in the flags
that are passed to clone() in the two cases?
Now, libc create_thread() uses (lines 182--188 of file file
"nptl/sysdeps/pthread/createthread.c"):
int clone_flags = (CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGNAL
| CLONE_SETTLS | CLONE_PARENT_SETTID
| CLONE_CHILD_CLEARTID | CLONE_SYSVSEM
#if __ASSUME_NO_CLONE_DETACHED == 0
| CLONE_DETACHED
#endif
| 0);
whereas, if I'm not mistaken, UML uses (file "kernel/skas/clone.c"):
err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD,
STUB_DATA + UM_KERN_PAGE_SIZE / 2 - sizeof(void *));
But then this means that the additional processes created by UML do
not share the memory space (no CLONE_VM), correct?
Thus:
- batch system schedulers do righteously consider each UML "thread" as
a separate process;
- however, UML "threads" do share a large portion of the memory, as
can be seen from this "ps" output:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6467 admin 15 0 32.0g 13g 13g S 0.0 27.7 0:00.00 kernel64-3.0.4
6466 admin 16 0 32.0g 13g 13g S 0.0 27.7 0:00.15 kernel64-3.0.4
6465 admin 22 0 32.0g 13g 13g S 0.0 27.7 0:00.00 kernel64-3.0.4
6458 admin 15 0 32.0g 13g 13g S 39.2 27.7 37:00.04 kernel64-3.0.4
7437 admin 15 0 12.0g 12g 12g T 52.9 25.6 70:54.39 kernel64-3.0.4
- so the problem lies in the algorithm that SGE and TORQUE apply for
computing the amount of memory used, which apparently just sums up
the total VSZ for each process (fast), instead of counting the
number of pages while ensuring that each shared page is counted only
once (slow)?
Thanks for any clarification!
Riccardo
|
|
From: Lakshmipathi.G <lak...@gm...> - 2011-10-12 07:43:52
|
Hi - I used UML in a 64-bit machine.Now I got my old laptop which is 32-bit. compiled the kernel again,but while try to start uml - it hangs at linux-2.6.32.x86_64# file linux linux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped llinux-2.6.32.x86_64# ./linux ubda=./Fedora14-AMD64-root_fs_work Locating the bottom of the address space ... 0x0 Locating the top of the address space ... While googleing about this error -came across this http://fixunix.com/kernel/399386-uml-fails-locate-address-space.html Does anyone know - how to resolve this issue? Do I need to apply some patch ? Thanks for any help. -- ---- Cheers, Lakshmipathi.G FOSS Programmer. www.giis.co.in |
|
From: Richard W. <ri...@no...> - 2011-10-09 16:24:23
|
glibc 2.12's pthread_cond_signal() is broken on UML because it does not have FUTEX_WAKE_OP. The issue got fixed in 2.12.2: http://sourceware.org/ml/libc-alpha/2010-08/msg00019.html Sadly, some distros (like CentOS 6.0) still ship glibc 2.12.1. So you have to expect problems when them on top of UML... Thanks, //richard |
|
From: richard -r. w. <ric...@gm...> - 2011-10-05 20:39:43
|
On Wed, Oct 5, 2011 at 10:01 PM, Dan Bassett <dba...@or...> wrote: > Is anybody maintaining the skas3 (and/or skas4) patches anymore? AFAIK no. I haven't used skas3/4 for years, skas0 is fine for my use cases. -- Thanks, //richard |
|
From: Dan B. <dba...@or...> - 2011-10-05 20:01:55
|
Is anybody maintaining the skas3 (and/or skas4) patches anymore? We're running the Redhat patched 2.6.32 kernel on our CentOS 6 host machines and the most recent skas3 patch I could find was against 2.6.31 vanilla, which kinda-sorta almost applied to 2.6.32 vanilla(by my count 8 hunks failed). I'm hoping that there are some more recent patches lurking deep inside someone's home directory somewhere...any help would be appreciated! Dan |
|
From: Troy P. <tro...@pi...> - 2011-10-03 10:02:17
|
* richard -rw- weinberger wrote :
> On Mon, Oct 3, 2011 at 9:32 AM, Troy Piggins <tro...@pi...> wrote:
> > Hi there. ?I'm running an ARM-based Dreamplug with Debian Squeeze on
> > it. ?Contemplating trying UML virtual machines on it, but not sure
> > if that's possible. ?Any ideas or pointers?
>
> No. Currently UML runs on only on x86_{32,64}.
> AFAIK Al Viro is working on a PPC port.
Ok, thanks for clarifying that mate.
--
Troy Piggins
|