Re: [9fans] Maximal number of processes
On 9 January 2014 08:08, Pavel Klinkovský pavel.klinkov...@gmail.comwrote: By the hard limit I consider something like maximal capacity of GDT, LDT or something similar, if exists. GDT and even Tss are per-processor; ldt isn't used. As to soft limits, apart from the few linear searches mentioned, which could be eliminated if necessary, for instance by tracking process groups, the main constraint is the kernel virtual address space and physical memory consumed by the KSTACK for each process. It's only 4k (in 32 bit mode) but it might be difficult to handle hundreds of thousands of the things comfortably. I tried 3000, on a lowly Atom with 2 Gb RAM: nova% ps|wc -l 2992 and it seemed fine. Do I hear more!? nova% ps|wc -l 3991 nova% cat /dev/swap 2135371776 memory 4096 pagesize 48986 kernel 28594/472345 user 0/32 swap 35004768/142308320 kernel malloc 0/16777216 kernel draw At that point I decided to quite while I was still ahead. I'd probably need a bit more DRAM to do anything much with all of them (they were only running sleep 60), but that's easy to find. Except that they'll have changed DRAM types again no doubt.
Re: [9fans] Maximal number of processes
On 10 January 2014 09:11, Charles Forsyth charles.fors...@gmail.com wrote: At that point I decided to quite while I was still ahead. 20,000 did not work because it ran out of kernel physical memory. That preallocation could be adjusted, but at some point the available kernel virtual address space will limit what it can allocate.
Re: [9fans] Maximal number of processes
Good work. As my good friend Boyd once said Don't give me bullshit speculation. Measure something!. brucee On 10 January 2014 20:15, Charles Forsyth charles.fors...@gmail.com wrote: On 10 January 2014 09:11, Charles Forsyth charles.fors...@gmail.comwrote: At that point I decided to quite while I was still ahead. 20,000 did not work because it ran out of kernel physical memory. That preallocation could be adjusted, but at some point the available kernel virtual address space will limit what it can allocate.
[9fans] [p9p] restart program on Acme Load
hi list, this is plan 9 port Acme question: how do i make Acme restart application upon Load? the only thing i care about is the correct working directory. i'm running `git gui' from Acme; the tag indicates it with `git' word. upon Dump, restart Acme, Load, the `git' word is recreated in tag, but the program is not started. -- dexen deVries [[[↓][→]]]
Re: [9fans] [p9p] restart program on Acme Load
I've been using Acme from p9p to interact with gnu-apl (sadly it has some quirks that make it kind of unusable...) and I am also interested in hearing of a way to do it (it was a mild pain to have to write ./apl --emacs each time I opened and closed acme or gnu-apl crashed. Ruben On Fri, Jan 10, 2014 at 11:06 AM, dexen deVries dexen.devr...@gmail.comwrote: hi list, this is plan 9 port Acme question: how do i make Acme restart application upon Load? the only thing i care about is the correct working directory. i'm running `git gui' from Acme; the tag indicates it with `git' word. upon Dump, restart Acme, Load, the `git' word is recreated in tag, but the program is not started. -- dexen deVries [[[↓][→]]]
[9fans] 9P on FPGA?
is there any known 9P implementation for FPGA? or has anyone been working on communicating with FPGAs over 9P? -- dexen deVries [[[↓][→]]]
Re: [9fans] 9P on FPGA?
is there any known 9P implementation for FPGA? or has anyone been working on communicating with FPGAs over 9P? Technically yes, because inferno runs hosted on microCOS on a Nios2 soft cpu on Altera FPGAs. But I imagine you're looking for something lower level?
Re: [9fans] 9P on FPGA?
On Friday 10 of January 2014 12:25:24 Richard Miller wrote: Technically yes, because inferno runs hosted on microCOS on a Nios2 soft cpu on Altera FPGAs. But I imagine you're looking for something lower level? thanks, will look into that. but i imagine this particular implementation may be somewhat coupled to inferno and/or Nios. But I imagine you're looking for something lower level? anything goes, Verilog preferred. i'm simply trying to learn something new :^) -- dexen deVries [[[↓][→]]]
Re: [9fans] 9P on FPGA?
On 10 January 2014 12:13, dexen deVries dexen.devr...@gmail.com wrote: is there any known 9P implementation for FPGA? or has anyone been working on communicating with FPGAs over 9P? similar: there was a project at the University of York (Styx on a Chip) that developed some sort of module that could allow devices to export name spaces. Styx and 9P2000 were by that time identical. ftp://ftp.cs.*york*.ac.uk/papers/rtspapers/R:Audsley:2005a.pdf www.dcs.gla.ac.uk/~marks/*styx*.pdf http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.126.3488rep=rep1type=pdf The earliest project was demonstrated at an Embedded Systems show at Birmingham NEC. It was one of only two rather cool things at the show (most of the show was boring UML stuff). The other cool thing was Lars Bok's (Esmertec) OSVM: real-time garbage-collecting Smalltalk running in 64k on a micro, offering on-the-fly code updates. Superb.
Re: [9fans] Maximal number of processes
20,000 did not work because it ran out of kernel physical memory. That preallocation could be adjusted, but at some point the available kernel virtual address space will limit what it can allocate. at the cost of moving KZERO down 256MB on the pae kernel, ivey# ps|wc 15961 111727 957732 and even more ivey; ps|wc 30064 210448 1803915 ivey# cat /dev/swap 17153769472 memory 4096 pagesize 131072 kernel 271322/4056860 user 0/0 swap 0/17877472 kernel malloc 0/17877472 kernel draw interestingly, the time to launch 1000 sleeps went up in a non-linear way here's the time to launch each 1000 processes 10000 20000 30001 40000 50001 60000 70001 80001 90000 1 1 11000 1 12000 1 13000 1 14000 1 15000 2 16000 1 17000 2 18000 2 19000 2 2 3 21000 3 22000 4 23000 4 24000 5 25000 5 26000 5 27000 7 28000 7 29000 8 3 8 launching 32000 processes was not possible. the kernel got stuck. here's one thing that's not immediately obvious, even when running the kernel. conv.nmach must be less than 0x7fff/(1000*1000) = 2147 to prevent reprioritize from doing silly things: /* * fairshare = 1.000 * conf.nproc * 1.000/load, * except the decimal point is moved three places * on both load and fairshare. */ fairshare = (conf.nmach*1000*1000)/load; - erik
Re: [9fans] Maximal number of processes
launching 32000 processes was not possible. the kernel got stuck. sloppy statement. it's not clear if the kernel was really stuck or just hit something exponential. here's one thing that's not immediately obvious, even when running the kernel. conv.nmach must be less than 0x7fff/(1000*1000) = 2147 to prevent reprioritize from doing silly things: /* * fairshare = 1.000 * conf.nproc * 1.000/load, * except the decimal point is moved three places * on both load and fairshare. */ fairshare = (conf.nmach*1000*1000)/load; and, look. the comment's wrong. never read the comments! - erik
Re: [9fans] [p9p] restart program on Acme Load
Hi! It seems dump file doesn't have application-specific info - it has to start with 'e' symbol. I have manually edited my acme.dump : /home/santucco /usr/local/plan9/font/fixed/anon/anon.14.font /lib/font/bit/lucm/unicode.9.font 0.000 67.8832117 w Newcol Kill Putall Dump Exit e 0 0 0 0 0 0 0 0 0 0 Amail /home/santucco/ amail And Load command runs amail. But Dump command doesn't save the info back to acme.dump Maybe this is a bug in rowdump function? Best regards, santucco On Fri, Jan 10, 2014 at 1:06 PM, dexen deVries dexen.devr...@gmail.comwrote: hi list, this is plan 9 port Acme question: how do i make Acme restart application upon Load? the only thing i care about is the correct working directory. i'm running `git gui' from Acme; the tag indicates it with `git' word. upon Dump, restart Acme, Load, the `git' word is recreated in tag, but the program is not started. -- dexen deVries [[[↓][→]]] -- Best regards, santucco
Re: [9fans] Maximal number of processes
I discovered another interesting feature in my tests: If 'fork' exceeds nproc value, kernel panics. If 'fork' reaches the available memory limit, it is blocked until some memory is released (e.g. by the finish of some process). Pavel 2014/1/10 erik quanstrom quans...@quanstro.net launching 32000 processes was not possible. the kernel got stuck. sloppy statement. it's not clear if the kernel was really stuck or just hit something exponential. here's one thing that's not immediately obvious, even when running the kernel. conv.nmach must be less than 0x7fff/(1000*1000) = 2147 to prevent reprioritize from doing silly things: /* * fairshare = 1.000 * conf.nproc * 1.000/load, * except the decimal point is moved three places * on both load and fairshare. */ fairshare = (conf.nmach*1000*1000)/load; and, look. the comment's wrong. never read the comments! - erik attachment: processes.PNG
Re: [9fans] [p9p] restart program on Acme Load
On Friday 10 of January 2014 17:03:07 Alexander Sychev wrote: But Dump command doesn't save the info back to acme.dump Maybe this is a bug in rowdump function? found `dump' in acme(4) echo 'dump git gui' | 9p write acme/$winid/ctl and then Dump got me close -- but the `git gui' was started in wrong dir -- in Acme's getwd() rather than window's directory. -- dexen deVries [[[↓][→]]]
Re: [9fans] [p9p] restart program on Acme Load
Maybe it makes a sence to set the directory via 'dumpdir'? Really, it seems this is only way to set command to be executed - according to the sources, 'e' is dumped if Window::dumpstr is filled, and Window::dumpstr is filled by 'dump' command. On Fri, Jan 10, 2014 at 5:36 PM, dexen deVries dexen.devr...@gmail.comwrote: On Friday 10 of January 2014 17:03:07 Alexander Sychev wrote: But Dump command doesn't save the info back to acme.dump Maybe this is a bug in rowdump function? found `dump' in acme(4) echo 'dump git gui' | 9p write acme/$winid/ctl and then Dump got me close -- but the `git gui' was started in wrong dir -- in Acme's getwd() rather than window's directory. -- dexen deVries [[[↓][→]]] -- Best regards, santucco
Re: [9fans] [p9p] restart program on Acme Load
You could put your long command line into a shell script that takes no arguments and run that shell script from acme's tag. sl