Re: [9fans] Blocks in C

2009-09-17 Thread Roman V Shaposhnik
On Thu, 2009-09-17 at 17:02 -0400, erik quanstrom wrote:
  ... In case anyone is wondering what they could be doing instead of feeding
  this massive thread more fatty foods.
 
 there's lots of complaining on the list about the
 content of the list.
 
 it's not like there aren't good meaty issues to discuss.
 what happened with either of the recently-reported
 fossil lockup problems, for instance?
 
 i mentioned that the pool library can act as a big
 kernel lock a few weeks ago.  i don't know if anyone
 has thoughts on how to deal with this.
 
 it seems to me we deserve the list we create.

I think you're right. Perhaps different folks are approaching
9fans with different assumptions, though. I see 3 camps present:
   1. The actual *developers* of the technology related to
   Plan 9. That would include you, Russ, Inferno folks and
   perhaps Nemo  co.

   2. The actual users of Plan9.

   3. The folks who do not use Plan9 in day-to-day life, but
   are fundamentally convinced in a WWP9D (what would Plan 9 do)
   principle.

And, of course, there are also trolls.

Trolls, aside, it looks like #1 and #2 might be slightly misaligned
with #3. At least my personal experience of getting frustrated on
9fans comes mostly from the cases where I didn't positioned my
question as the WWP9D one.

It would be easy to say that list should be divided, in practice
though, I'm not sure the folks who I would like to have a privilege
of addressing would voluntarily subscribe to the #3 type of list.

Thanks,
Roman.




Re: [9fans] Blocks in C

2009-09-03 Thread Roman V Shaposhnik
On Thu, 2009-09-03 at 17:32 +0200, Uriel wrote:
 So libthread must be a figment of 9fan's imagination...
 
 Of course, for Apple (or anyone else) to learn from Plan 9 would be
 impossible, so instead they had to add a new 'feature' to C.

Plan 9 has a lot to offer and a lot for others to learn from. Concurrency
framework that could scale up to 1K [virtual]cores in an SMP
configuration is not one of those features though.

Thanks,
Roman.




Re: [9fans] Blocks in C

2009-09-03 Thread Roman V Shaposhnik
On Thu, 2009-09-03 at 08:44 -0700, David Leimbach wrote:

 The blocks aren't interesting at all by themselves, I totally agree
 with that.  However what they do to let you write a function inline,
 that can be pushed to another function, to be executed on a concurrent
 FIFO, is where the real power comes out.
 
 
 I'm not 100% sure why the heck they did it this way, which is totally
 different from any other version of concurrent programming setup I've
 seen, except maybe that Apple likes to think different?

It seems that quite a few concurrency frameworks worth the paper their
APIs are written on, are converging on this model. The ultimate goal
has to do with encapsulation of the computation into idempotent units
and describing the topology between those units. That separates the
executor from the semantics of computations nicely and has all sorts of
bonuses as far as bridging the gap between SMP and distributes systems
are concerned.

I think the semantics of what needs to be done is well understood. The
million dollar question is how to best express such a semantics in what
still looks like a programming language.

What Apple has done is one way of attacking the problem. Where I sit we
explore CPS for doing very similar sort of thing. One point is clear --
there no consensus yet.

Thanks,
Roman.





Re: [9fans] Blocks in C

2009-09-03 Thread Roman V Shaposhnik
On Thu, 2009-09-03 at 11:54 -0400, erik quanstrom wrote:
  Plan 9 has a lot to offer and a lot for others to learn from. Concurrency
  framework that could scale up to 1K [virtual]cores in an SMP
  configuration is not one of those features though.
 
 forgive the ignorance, but is there any such thing as a
 1k-core smp machine? 

I put virtual there on purpose. Here's what I can publically
share: http://www.tgdaily.com/content/view/43776/135/ and there's
more to come.

On a public front it is still 512 not 1K, though:
   4 cpus per box * 16 physical cores per cpu * 8 virtual threads per core

  and is apple doing such a thing?

Nobody knows what Apple is doing for sure. I know 3 things though:
   1. Apple badly wants a share of a server market
   2. Apple is still doing POWER, though not releasing it (just like
  they did x86 for 7 or so years without telling anyone)
   3. POWER is getting to 1K SMP as well.
   
 even commodity intel and amd mp offerings are numa.
 they're not very n, but they're still n.

True. But even for those platforms good SMP frameworks are quite
difficult to come by. And here I do mean computation, not how
to accommodate scalable IO.

Thanks,
Roman.




Re: [9fans] Blocks in C

2009-09-03 Thread Roman V Shaposhnik
On Thu, 2009-09-03 at 15:36 -0400, erik quanstrom wrote:
Apple's using it all over the place in Snow Leopard, in all their native
apps to write cleaner, less manual-lock code.  At least, that's the 
claim
:-).
  
   could someone explain this to me?  i'm just missing how
   naming a block of code could change its locking properties.
  
  
  The explanation is in the manual I linked to earlier in this discussion.  If
  you want to see examples there's two I can think of available for download.
   One is called DispatchLife the other is DispatchFractal.
  
  I've looked at DispatchLife, and there's no explicit locking of state for
  every cell being concurrently update in Conway's game of life.
 
 i can't find DispatchLife after a few minutes of googling.
 i've read the manual, and it looks like csp to me.  clearly
 i am a reprobate outside the apple reality distortion field.
 
 could you explain why this isn't csp 

Please define what is it that you refer to as csp. The reason
I'm asking is simple: csp-like things are needed but *not*
sufficient for implementing a nice abstraction for the 
parallel framework.

 and why this can't be done
 with regular c (that is why we need the concept of an
 unnamed function pointer) and the thread library?

Anything can be done using regular C and threads. The trick here
is to make everything *scalable* and *painless* enough so that
mere mortals can start benefiting from parallelism in their code.

The other trick here is to find a model that makes things *natural*, and
that means practically no explicit locking, less shared state, etc.

The search for the model is meaningless unless it is used for
solving *practical* challenges. In that respect, one of my
favorite article is how implementation of a chess engine 
influenced Cilk framework (which almost has the notion of a block)
   http://supertech.csail.mit.edu/papers/icca99.pdf

Read it, I don't think we can be on the same page (and escape the
armchair philosophy trap) unless we are talking about practical
applications of the framework.

Look at the chess example -- can the same be done with pure C? Sure!
Did Cilk make it less painful? Absolutely!

Thanks,
Roman.




Re: [9fans] Blocks in C

2009-09-03 Thread Roman V Shaposhnik
On Thu, 2009-09-03 at 17:35 -0400, erik quanstrom wrote:
 On Thu Sep  3 17:09:01 EDT 2009, r...@sun.com wrote:
  Anything can be done using regular C and threads. The trick here
  is to make everything *scalable* and *painless* enough so that
  mere mortals can start benefiting from parallelism in their code.
  
  The other trick here is to find a model that makes things *natural*, and
  that means practically no explicit locking, less shared state, etc.
  
  The search for the model is meaningless unless it is used for
  solving *practical* challenges. In that respect, one of my
  favorite article is how implementation of a chess engine 
  influenced Cilk framework (which almost has the notion of a block)
 http://supertech.csail.mit.edu/papers/icca99.pdf
  
  Read it, I don't think we can be on the same page (and escape the
  armchair philosophy trap) unless we are talking about practical
  applications of the framework.
  
  Look at the chess example -- can the same be done with pure C? Sure!
  Did Cilk make it less painful? Absolutely!
 
 my question was, what's naming your function pointers
 or not got to do with locking?  i'm asking about the language
 construct, not the library er i mean framework and maybe runtime
 that goes with it.

It has nothing to do with locking. You are correct. However, the style
of programming that it allows lets you build lock-free computations
much more *elegantly*. 

I use the word elegantly on purpose here. Since the discussion is
already in the personal taste territory all I can do to back my
claim is to note that regardless of whether blocks are closures 
or not (they are not) they are true lambdas.

Are lambdas useful? I sure think so, but I don't think I can convince
you by any other means except for offering links to LAMBDA the
ultimate... set of articles:
http://library.readscheme.org/page1.html

Thanks,
Roman.




[9fans] Petabytes on a budget: JBODs + Linux + JFS

2009-09-03 Thread Roman V Shaposhnik
None of those technologies [NFS, iSCSI, FC] scales as cheaply,
reliably, goes as big, nor can be managed as easily as stand-alone pods
with their own IP address waiting for requests on HTTPS.
   
http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/

Apart from the obvious comment that I swear I used a quote like that
to justify 9P more than once, I'm very curious to know how Plan9
would perform on such a box.

Erik, do you have any comments?

Thanks,
Roman.




Re: [9fans] Blocks in C

2009-09-03 Thread Roman V Shaposhnik
On Thu, 2009-09-03 at 12:44 -0400, erik quanstrom wrote:
 On Thu Sep  3 12:20:09 EDT 2009, r...@sun.com wrote:
  On Thu, 2009-09-03 at 11:54 -0400, erik quanstrom wrote:
Plan 9 has a lot to offer and a lot for others to learn from. 
Concurrency
framework that could scale up to 1K [virtual]cores in an SMP
configuration is not one of those features though.
   
   forgive the ignorance, but is there any such thing as a
   1k-core smp machine? 
  
 [...]
  True. But even for those platforms good SMP frameworks are quite
  difficult to come by. And here I do mean computation, not how
  to accommodate scalable IO.
 
 i'll grant you this in implementation.  the pool library's lock
 in effect becomes plan 9's BLK.  since the pool library is used
 in the kernel and user space, a user space application gets hit
 twice.  i've been doing some full-tilt boogie testing with 2x10gbe
 and even with 2 cores, the BLK^wpool lock is devastating.

I'm not surprised here. I'm also not surprised that it gets used
twice -- that's precisely what Sun does with slab allocator.

 where do you see the theoretical limitation in plan 9?

I don't think there's anything limiting plan 9, except for 
people willing to invest their time and coding skills in
tuning these things and coming up with programming frameworks
that take us further than manually juggling processes/threads.

My view is a bit skewed towards computations, and there its
all about your kernel scheduler and memory usage patterns.
At least at the low level it is. So I guess as long as these
things are ok, you can then build abstractions a'la GCD on
top of them.

Thanks,
Roman.




Re: [9fans] Blocks in C

2009-09-02 Thread Roman V Shaposhnik
On Wed, 2009-09-02 at 10:04 +0200, Anant Narayanan wrote:
 Mac OS 10.6 introduced a new C compiler frontend (clang), which added  
 support for blocks in C [1]. Blocks basically add closures and  
 anonymous functions to C (and it's derivatives).

They are NOT closures in my book. They lack lexical scoping. A true
closure makes the following possible (using JavaScript to stay closer 
to C syntax):
   function outer() {
   var outer_var = 1;
   return function () {
  outer_var = { simply: a different object }
   }
   }

Notice how I can modify outer_var from within the closure. With blocks
all you get is an upvaluer (IOW, outer_var becomes constant). 

This is still useful for things like map, etc. But I hate when people
call anonymous classes in Java closures (although depending on
a textbook it is possible to stretch the term).

Finally, if you want to know how to get from GCC blocks to the real
deal read up 6.6 of this excellent paper:
  http://www.lua.org/doc/hopl.pdf

 Full details with examples are in the linked article. 

The article seems to miss a couple of important points. And the 
better alternative for those who want to know what's going on
is Apple's developer website: 
   
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40007502-CH1-SW1

 I think the feature is quite  
 elegant and might be useful in cases where you want map/reduce like  
 functionality in C.

It is a fun feature, no doubt. It is also pretty easy to implement.

 How much effort would it be to support a feature similar to blocks in  
 8c (and family)? What are your thoughts on the idea in general?

Personally I think you'd be better off exploring a connection that a 
language called Lua has to C. In the immortal words of Casablanca it
just could be the begging of a beautiful friendship.

Thanks,
Roman.




Re: [9fans] Blocks in C

2009-09-02 Thread Roman V Shaposhnik
On Wed, 2009-09-02 at 08:07 -0700, David Leimbach wrote:
 Has anyone actually looked at the spec 

Yes. Well, I know I did ;-)

 I've actually looked at these, and used em a little bit.  They're not
 at all as bad as I once thought they could be, and the reason they're
 there is to work with a concurrency framework onto which blocks can be
 scheduled to run on various queues, to do concurrent programming.  

Right-O. In fact, blocks are particularly, how shall I put it,
congruent to the most promising C parallelization framework
to date: Cilk.

 Does it succeed in the goal of making it possible to do lockless
 programming of concurrent applications?  Yes, there's several rather
 interesting examples showing the concurrent computation of all the
 cells in Conway's Life for example.  I'd say this beats the snot out
 of coding with pthreads.

One again, have you tried Cilk for exactly this kind of thing? I'd
be curious to know your opinion on how what you see in SL compares to
it.

 Blocks themselves are really not terribly useful, you need the
 libdispatch library to make the real value in them come out, which
 does all the queue management by talking to the subsystem of Snow
 Leopard called Grand Central Dispatch.  

Could you, please, send me a pointer to the API docs? Off list, perhaps?

Thanks,
Roman.




Re: [9fans] nice quote

2009-09-02 Thread Roman V Shaposhnik
On Wed, 2009-09-02 at 12:11 -0700, Brian L. Stuart wrote:
   Q: Will C continue to be important into the future?
   (Dave Kirk, Nvidia)A: No, I think C will die like
  Fortran has
  
  let me explain the joke. In HPC circles, people have been
  predicting
  the death of fortran for 30 years. Fortran has continued to
  grow and
  thrive. The predictions continue, but the latest fortran
  standard
  includes objects.
  
  So, what Dave is saying, tongue in cheek, is that C will
  die in the
  way fortran has -- i.e., not at all.
 
 I just hope standards committees don't enhance C into
 Frankenstein's monster.

A friend of mine, who is still serving on the C committee, once
mentioned who lucky they were to have C++ around as a perfect
dumping ground for all the cool enhancements that got proposed
along the way.

Thanks,
Roman.

P.S. Another friend of mine still feels sad that Fortress didn't
become that same sort of dumping ground for Fortran ;-)




Re: [9fans] iwp9 deadline extension

2009-08-28 Thread Roman V Shaposhnik
On Fri, 2009-08-28 at 16:11 -0400, Devon H. O'Dell wrote:
 2009/8/28 Eric Van Hensbergen eri...@gmail.com:
  Satelite conference locations in Antwerp and Oz may be be a bad idea
  assuming folks can accomodate crazy time differences.
 
 Not a bad idea, does anyone on the else pc have A/V equipment? I do,
 but it's not great stuff (just webcam quality), so it'd be like last
 resort stuff. I could get a DV cam if necessary.

I have a semi-pro DV cam (which is a life safer in poor lighting
conditions) which I can bring. Streaming should not really be
a problem given that our viewership is likely to be in 2 digits.

Thanks,
Roman.




Re: [9fans] 9P on android

2009-08-27 Thread Roman V Shaposhnik
On Thu, 2009-08-27 at 10:24 -0700, Skip Tavakkolian wrote:
 because there can only be one outstanding request -- with continuous polling.

Unless I misunderstood you, this is not quite true. You can have
as many outstanding requests as you have XMLHTTPRequest objects.
And, of course, you can do AJAX Push using various techniques.

So it really is not all that different, except that you have
to strip the HTTP envelope.

Thanks,
Roman.





[9fans] [Fwd: Mentor Summit - Dates Confirmed, Holding Pattern for Now (longish but important)]

2009-08-24 Thread Roman V Shaposhnik
Datewise this looks like a pretty good potential for continuation
of the IWP9 '09 ;-)

Thanks,
Roman.
---BeginMessage---

Hello everyone,

We have confirmed that we'll hold our annual mentor summit on the 24 
25 October this year at the Googleplex in Mountain View, California.
Assume we will also have the pre-summit festivities on the evening of
the 23rd for locals and those who arrive in town early and are not
eaten by jet lag.

As usual, we will be inviting mentoring organizations to send 2
mentors and will make more room for locals who do not require travel
assistance based on space. In other words, we will be keeping a wait
list for local folks again and opening up room for folks on the wait
list as we get closer to the event.

We have not yet determined the following:

- which organizations will be invited (but it's looking good for all
150 from this year so far)
- how much funding will be provided for travel assistance to each
organization
- which hotel we will be using, domain vs. wild palms vs. both
- what meals we will be serving
- summit hours
- schedule of sessions during summit hours

So as you can see, beyond the dates we haven't determined much of
anything. Really, that's OK, as we have two months to figure all that
out and for all of you to buy your plane tickets.

What I'd like to ask now is that all you folks to talk amongst
yourselves to determine who would be best served by representing your
organization at the summit.

If you have never been to a summit, please check out the wiki [0] and
search the archives of this list for more data. Those of you who would
like to share a bit about summits past, please do so in this thread.
For those who would rather not hear the discussion, please mute/
autoarchive/otherwise filter.

If one of you would like to start a page on the wiki for the 2009
summit to begin capturing session ideas and all that jazz. If someone
would like to also copy over the basic content like location
(Googleplex!), airport info, etc and let folks know that is done, we
could begin updating it with our collective wisdom (like the fact that
a limo is now cheaper than a cab from SFO - eek!).

So for now, holding pattern. More info after 1 September, but perhaps
a week or two after that, so patience please.

Cheers,
LH

[0] - https://gsoc-wiki.osuosl.org/index.php/Main_Page

username - mentor
password - yourock


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Google Summer of Code Mentors List group.
To post to this group, send email to 
google-summer-of-code-mentors-l...@googlegroups.com
To unsubscribe from this group, send email to 
google-summer-of-code-mentors-list+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-summer-of-code-mentors-list?hl=en
-~--~~~~--~~--~--~---

---End Message---


[9fans] Lua on Plan9

2009-08-14 Thread Roman V. Shaposhnik
On Fri, 2009-08-14 at 09:16 +, Pavel Klinkovsky wrote:
  Speaking of which (or may be not ;-)) is there anybody using Lua
  on Plan9?
 I am playing with Lua on my Plan9 computer...

What do you use it for? Any kind of fun projects? My idea is to try
and see whether Plan9+Lua would be a more useful combination for
building Web service environment than werc.

Thanks,
Roman.




[9fans] Lua on Plan9

2009-08-14 Thread Roman V. Shaposhnik
On Fri, 2009-08-14 at 09:27 +0100, Robert Raschke wrote:

 Last time I tried, the standard Lua compiled out of the box under the
 APE.

That is good to know. Still, I'd rather see it run without APE.

 Great little language. I use it in my day job (together with Erlang).

*together* with Erlang?!?! That I have to know more about. Perhaps
off-list.

  It's implementation is indeed just as enlightening as the Plan 9
 code. An exercise in doing exactly what is required and no more. Very
 elegant in my eyes.

Couldn't agree more!

Thanks,
Roman.




Re: [9fans] Using proportional fonts in Acme for Programming

2009-08-14 Thread Roman V. Shaposhnik
On Fri, 2009-08-14 at 10:49 -0600, Daniel Lyons wrote:
 On Aug 14, 2009, at 3:15 AM, Aaron W. Hsu wrote:
 
  On Thu, 13 Aug 2009 13:58:39 -0400, Daniel Lyons fus...@storytotell.org 
   wrote:
 
  I'd love it if Acme or Plan 9 had good support for some kind of  
  Lisp variant.
 
  Maybe that should be my next side project.
 
 
 If that's something you're thinking about doing, let me suggest you  
 take a look at Clojure. The Java aspect aside, it is a good compromise  
 in design between Scheme and Lisp and introduces lots of good ideas.  
 This is something I would want to do but I have a long way to go with  
 Plan 9 before I think I could be serious about it.

I looked at it for a while and came with a realization that it could
be just a tad heavier than what I need for most of the stuff I do. Plus
I'm not sure how to port it to Plan9 without first porting the JVM.

Thanks,
Roman.




Re: [9fans] Thrift RPC

2009-08-14 Thread Roman V. Shaposhnik
On Thu, 2009-08-13 at 09:42 +0100, roger peppe wrote:
 2009/8/13 Roman Shaposhnik r...@sun.com:
  Am I totally missing something or hasn't been the binary RPC
  of that style been dead ever since SUNRPC? Hasn't the eulogy
  been delivered by CORBA? Haven't folks realized that S-exprs
  are really quite good for data serialization in the heterogeneous
  environments (especially when they are called JSON)
 
 i'm not familiar with Thrift, but i've done some stuff with google protobufs,
 from which i think Thrift is inspired.

I'd be very curious to know the details of the project where you
did find protobufs useful. Can you share, please?

 speaking of protobufs, i don't think they're a bad idea.
 they're specifically designed to deal
 with forward- and backward-compatibility, which is something
 you don't automatically get with s-expressions, 

Not unless you can make transport protocol take care of that for you. 
HTTP most certainly can and same can be said about 9P. I truly believe
that such a division of labor is a good thing. Thrift and protobufs are
doing RPC, I think we can agree on that. So if we were to look at how
local procedure calls are dealing with the compatibility issue we get
dynamic linker symbol versioning. I don't like those, but at least they
are implemented in the right place -- the dynamic linker. What Thrift
feels like would be analogous to pushing that machinery into my 
library. 

And since we are on this subject of dynamic linking -- one of the
fallacies of introducing versioning was that it would somehow make
compatibility seamless. It didn't. In all practical cases it made things
much, much, much worse. Perhaps web services are different, but I can't
really pinpoint what makes them so: you are doing calls to the symbols,
the symbols are versioned and they also happen to be remote. Not much
difference from calling your trustworthy r...@version1 ;-)

 and if you're
 dealing with many identically-typed records, the fact that each field
 in each record is not string-tagged counts saves a lot of bandwidth
 (and makes them more compressible, too).

That's really a type of YMMV argument. I can only speak from my personal
experience where the latency is much more a problem than bandwidth. 

 we don't use text for 9p, do we?

No we don't. But, as erik pointed out we use 9P as a transport
protocol. My biggest beef with how Thrift was positioned (and
that's why I'm so curious to know the details of your project)
is the fact that they seem to be pushing it as a better JSON.
At that level -- you already have a transport protocol, and
it just doesn't make a lot of sense to represent data in such
an unfriendly manner. And representation is important. After all,
REST stands for *representational* state transfer, doesn't it?

I certainly wouldn't object to Thrift use as a poorman's way
of implementing an equivalent of 9P (or any kind of protocol
for that matter) cheaply.

Hm. Now that I've mentioned it, perhaps trying Thrift out as
an implementation mechanism for 9P and comparing the result
with the handwritten stuff would be a good way for me to 
really see how useful it might be in practice.

  and you
  really shouldn't be made to figure out how large is the integer
  on a host foo?

I firmly believe in self-descriptive data. If you have an integer
you have an integer. You shouldn't burden the representation layer
with encoding issues. Thus:
{ integer: 12312321...very long stream of digits...123123 }
is a perfectly good way to send the data. You might unpack it
into whatever makes sense on the receiving end, but please don't 
make me suffer at the data representation layer.

Thanks,
Roman.




Re: [9fans] audio standards -- too many to choose from

2009-08-13 Thread Roman V. Shaposhnik
On Wed, 2009-08-12 at 17:36 +0200, hiro wrote:
  This sounds like exactly the kind of thing one wants
  from an audio driver for playback. For recording things
  get slightly more complicated.
 
 What exactly do you mean?

Now that I understand what Tim is trying to do my original
concern makes no sense. Sorry for this little bit of noise.

 
  Even for playback if you want to do passthrough (via
  SPDIF or some such) things get slightly more complicated.
  Of course, one can disregard passthrough as not
  being an audio at all, but rather a datalink issue.
 
 What's so special about things like SPDIF?

Two things: the data traveling over the link can be any data, not
just some form of PCM (it can be AC-3, it can be DTS, it can even
be MP3). In that respect the audio card acts as a pass-through 
device. It is not really supposed to do anything with the 
data. And that brings us to the second point -- the pass-through
APIs can be as ugly as hell, depending on the type of the device
(follow the link to the MPlayer docs I provided in this thread).

 Why would it be not suitible for the kernel audio driver? 

Because it has very little to do with the PCM audio, and that's
what the driver discussed in this thread was supposed to be all about.
Now, I'm not saying that there's shouldn't be a special driver just for
pass-through type of functionality, all I'm saying is that
lumping this functionality together with the PCM one would
confuse things.

 For me it's clearly an audio and
 not a datalink issue, but perhaps I have only limited use cases.

Perhaps, everywhere in this thread I should've prefixed the word
audio with some form of PCM.

Thanks,
Roman.




Re: [9fans] Using proportional fonts in Acme for Programming

2009-08-13 Thread Roman V. Shaposhnik
On Thu, 2009-08-13 at 11:55 -0600, Daniel Lyons wrote:
 I'd love it if Acme or Plan 9 had good support for some kind of Lisp  
 variant.

Speaking of which (or may be not ;-)) is there anybody using Lua
on Plan9?

Thanks,
Roman.

P.S. The more I look into Lua (as a way to help C refuge start
doing some functional stuff) the more it seems that the two have
a lot in common when it comes to software architecture.




Re: [9fans] ceph

2009-08-04 Thread Roman V Shaposhnik
On Mon, 2009-08-03 at 19:56 -0700, ron minnich wrote:
   2. do we have anybody successfully managing that much storage that is
  also spread across the nodes? And if so, what's the best practices
  out there to make the client not worry about where does the storage
  actually come from (IOW, any kind of proxying of I/O, etc)
 
 Google?

By we I mostly meant this community, but even if we don't focus on
9fans, Google is a non-example. They have no clients for this filesystem
per-se.

  The request: for each of the (lots of) compute nodes, have them mount
  over 9p to, say 100x fewer io nodes, each of those to run lustre.
 
  Sorry for being dense, but what exactly is going to be accomplished
  by proxying I/O in such a way?
 
 it makes the unscalable distributed lock manager and other such stuff
 work, because you stop asking it to scale.

So strictly speaking you are not really using 9P as a filesystem
protocol, but rather as a convenient way for doing RPC, right? 

Thanks,
Roman.




Re: [9fans] ceph

2009-08-04 Thread Roman V Shaposhnik
On Tue, 2009-08-04 at 10:55 +0100, C H Forsyth wrote:
 they emphatically don't go for posix semantics...
 
 what are posix semantics?

I'll bite:
   http://www.opengroup.org/onlinepubs/009695399/
   
   [ anything else that would take an FD as an argument ]

   http://www.opengroup.org/onlinepubs/009695399/

Thanks,
Roman.
  




Re: [9fans] ceph

2009-08-04 Thread Roman V Shaposhnik
On Tue, 2009-08-04 at 09:43 +0100, Steve Simon wrote:
  Well, with Linux, at least you have a benefit of a gazillions of FS
  clients being available either natively or via FUSE.
 
 Do you have a link to a site which lists interesting FUSE filesystems,
 I am definitely not trying to troll, I am always intrigued by others
 ideas of how to reprisent data/APIs as fs.

I don't, and I probably should start documenting it. The easiest way
to find them, though, is to be suscbribed to fuse ML and collect
the domain names of posters. Turns out that anybody who's doing cloud
storage these days does it via FUSE (which, might not be as surprising
if you think about what's the dominant OS on EC2). You have companies
ranging from startups:
   http://www.nirvanix.com/
all the way to tyrannosaurus' like EMC and IBM betting on FUSE to get
them to storage in the cloud.

Sadly, none of them are open source as far as I can tell.

 Sadly the Fuse fs I have seen have mostly been disappointing.There are
 a few I which would be handy on plan9 (gmail, ipod, svn) but most
 seem less useful.

The OS ones, are not all that impressive. I agree.

Thanks,
Roman.




Re: [9fans] ceph

2009-08-04 Thread Roman V Shaposhnik
On Mon, 2009-08-03 at 21:23 -1000, Tim Newsham wrote:
   2. do we have anybody successfully managing that much storage that is
  also spread across the nodes? And if so, what's the best practices
  out there to make the client not worry about where does the storage
  actually come from (IOW, any kind of proxying of I/O, etc)
 
 http://labs.google.com/papers/gfs.html
 http://hadoop.apache.org/common/docs/current/hdfs_design.html
 
  I'm trying to see how the life after NFSv4 or AFS might look like for
  the clients still clinging to the old ways of doing things, yet
  trying to cooperatively use hundreds of T of storage.
 
 the two I mention above are both used in conjunction with
 distributed map/reduce calculations.  Calculations are done
 on the nodes where the data is stored...

Hadoop and GFS are good examples and they work great for the
single distributed application that is *written* with them
in mind.

Unfortunately, I can not stretch my imagination hard enough
to see them as general purpose filesystems backing up data
for gazillions of non-cooperative applications. The sort
of thing NFS and AFS were built to accomplish.

In that respect, ceph is more what I have in mind: it 
assembles storage from clusters of unrelated OSDs into a 
a hierarchy with a single point of entry for every 
user/application.

The question, however, is how to avoid the complexity of
ceph and still have it look like a humongous kenfs or
fossil from the outside. 

Thanks,
Roman.




Re: [9fans] Intel atom motherboard - success at last

2009-08-04 Thread Roman V Shaposhnik
On Tue, 2009-08-04 at 19:33 -0400, erik quanstrom wrote:
  Steve, can you list the total configuration of this machine... motherboard
  model etc?  This sounds a lot like what I was thinking of building for home.
  I also would like to try Erik's new ISO, but sadly, haven't had a lot of
  free time to do anything with it.  (I already downloaded it)
 
 http://www.supermicro.com/products/motherboard/ATOM/945/X7SLA.cfm?typ=H
 
 vesa graphics are quite snappy, though it's a shame to give up the second
 processor.

This one still has a fan. Is there anything decent *and* fanless out
there?

Thanks,
Roman.





[9fans] renaming to an existing file

2009-08-04 Thread Roman V Shaposhnik
I've just realized that in 9P the wstat would refuse
to rename an entry if a target name already exists. 

So how can I atomically replace one file with another
one, so that during the operation clients opening
it would not fail?

In POSIX rename gives you such an atomicity:
---
If the old argument points to the pathname of a file that is not a
directory, the new argument shall not point to the pathname of a
directory. If the link named by the new argument exists, it shall be
removed and old renamed to new. In this case, a link named new shall
remain visible to other processes throughout the renaming operation and
refer either to the file referred to by new or old before the operation
began.


How can I achieve the same result with 9P?

Thanks,
Roman.




Re: [9fans] ceph

2009-08-03 Thread Roman V Shaposhnik
On Sat, 2009-08-01 at 08:47 -0700, ron minnich wrote:
  What are their requirements as
  far as POSIX is concerned?
 
 10,000 machines, working on a single app, must have access to a common
 file store with full posix semantics and it all has to work like it
 were one machine (their desktop, of course).
 
 This gets messy. It turns into an exercise of attempting to manage a
 competing set of race conditions. It's like tuning
 a multi-carburated enging from years gone by, assuming we ever had an
 engine with 10,000 cylinders.

Well, with Linux, at least you have a benefit of a gazillions of FS
clients being available either natively or via FUSE. With Solaris...
oh well...

  How much storage are talking about?
 In  round numbers, for the small clusters, usually a couple hundred T.
 For anyhing else, more.

Is all of this storage attached to a very small number of IO nodes, or
is it evenly spread across the cluster?

In fact, I'm interested in both scenarios, so here come two questions:
  1. do we have anybody successfully managing that much storage (lets
 say ~100T) via something like humongous fossil installation (or
 kenfs for that matter)?

  2. do we have anybody successfully managing that much storage that is
 also spread across the nodes? And if so, what's the best practices
 out there to make the client not worry about where does the storage
 actually come from (IOW, any kind of proxying of I/O, etc)

I'm trying to see how the life after NFSv4 or AFS might look like for 
the clients still clinging to the old ways of doing things, yet
trying to cooperatively use hundreds of T of storage.

  I'd be interested in discussing some aspects of what you're trying to
  accomplish with 9P for the HPC guys.
 
 The request: for each of the (lots of) compute nodes, have them mount
 over 9p to, say 100x fewer io nodes, each of those to run lustre.

Sorry for being dense, but what exactly is going to be accomplished
by proxying I/O in such a way?

Thanks,
Roman.




[9fans] ceph

2009-07-29 Thread Roman V Shaposhnik
This is sort of off-topic, but does anybody have any experience with
Ceph?
   http://ceph.newdream.net/

Good or bad war stories (and general thoughts) would be quite welcome.

Thanks,
Roman.
  




Re: [9fans] i/o on a hangup channel asymmetry

2009-07-20 Thread Roman V Shaposhnik
On Mon, 2009-07-20 at 01:21 -0400, erik quanstrom wrote:
  one last kick of a dead horse: see that's exactly what I'm
  talking about -- all these exceptions and for what? I'm
  pretty sure if we change the devpipe today not to send
  a note nobody would even notice...
 
 since you're confident that this exception is spurious,
 why don't you remove it from your kernel?  your
 argument would be much more convincing if you had
 evidence that after a couple million pids, your cpu
 server has experienced no funnies.

This does look like a curious experiment. Now, since I don't
run a native Plan9 kernel, I did modify 9vx (one can't thank
Russ enough for providing it!):

--- a/src/9vx/a/devpipe.c
+++ b/src/9vx/a/devpipe.c
@@ -313,8 +313,9 @@ pipewrite(Chan *c, void *va, long n, vlong offset)
print(pipewrite hi %lux\n, getcallerpc(c));
if(waserror()) {
/* avoid notes when pipe is a mounted queue */
-   if((c-flag  CMSG) == 0)
+   /* if((c-flag  CMSG) == 0)
postnote(up, 1, sys: write on closed pipe, NUser);
+*/
nexterror();
}
 
@@ -345,8 +346,9 @@ pipebwrite(Chan *c, Block *bp, ulong offset)
 
if(waserror()) {
/* avoid notes when pipe is a mounted queue */
-   if((c-flag  CMSG) == 0)
+   /* if((c-flag  CMSG) == 0)
postnote(up, 1, sys: write on closed pipe, NUser);
+*/
nexterror();
}

So far so good. The test2.c now returns -1 i/o on a hangup channel from write
and the rest of the system seems to be pretty stable.

The usual pipelines that I run (ls | sort, ...|awk, ...|sed) all seem to
be doing quite well.

Unfortunately I don't think I can get to a couple of million pids in my
9vx as you've suggested. So I guess, in the end, it doesn't count,
right?

Thanks,
Roman.




Re: [9fans] i/o on a hangup channel asymmetry

2009-07-20 Thread Roman V Shaposhnik
On Mon, 2009-07-20 at 10:53 +0100, Charles Forsyth wrote:
 pipe would return -1 (and set a error condition) and the
 applications were paying attention (and I'm pretty sure all
 applications on Plan 9 would do a reasonable thing when
 presented with -1 from a write).
 
 they only notice when the write occurs. suppose that takes
 several minutes of computation.

Just to correct the statement of fact: same as true for the 
note -- it only gets sent when the write occurs. Thus -- there's 
no difference, really.

Thanks,
Roman.




Re: [9fans] i/o on a hangup channel asymmetry

2009-07-20 Thread Roman V Shaposhnik
On Mon, 2009-07-20 at 10:52 +0100, Charles Forsyth wrote:
 you don't really want to get write error printed from every
 process in a pipe line such as

As much as I thought that could be an issue, I could NOT actually
make many of the commands I tried produce this message on a 
modified 9vx:
   term% ls | date
   
Some did produce a message, but somehow it didn't look all that
problematic (helpful, in fact -- letting me know that somewhere
in my pipe there was a problem and not all of the data went through):
   term% awk 'BEGIN { printf(Hello\n); }' | date
   awk: write error on stdout

   slowly-compute-big-file | dosomemore | andyetmore | sed -n 
 '/something/;p;q'
 or even
   slowly-compute-big-file | badusageofsomething
 where the latter prints a usage message and quits.
 you want to make sure the previous commands in the pipeline stop, right away.

One again -- just to make things clear -- slowly-compute-big-file WILL
NOT stop before it attempts the first actual write on a closed pipe. It
will merrily compute away. A trivial:
   cpu% sleep 100 | sleep 1
would be enough to verify your hypothesis. 

Thanks,
Roman.




Re: [9fans] git on plan9

2009-07-20 Thread Roman V Shaposhnik
On Mon, 2009-07-20 at 14:39 -0700, John Floren wrote:
 Hi
 Can I get a copy of your code?

In fact, can it put in contrib ?

Thanks,
Roman.

 
 Thanks
 
 John
 
 On Sat, Jul 18, 2009 at 3:46 PM, driv...@0xabadba.be wrote:
 Phew finally got it.  There was some hackery involved in the hg-git 
  python code since mmap wasn't supported -- i basically just implemented 
  them with reads; however I was considering writing an mmap module that used 
  reads but realized that would be misleading since it wasn't really mmap.  I 
  think altering the hg-git code is the best option and i've done it in such 
  a way that its isolated so it can be easily updated from mainstream.  Let 
  me know if you want it.
 
  ++james
 
  rator_gade% hg clone git://zen-sources.org/zen/THE.git
  destination directory: THE.git
  fetching from : git://zen-sources.org/zen/THE.git
  importing Hg objects into Git
  Counting objects: 1592, done.
  Compressing objects:   0% (1/1185)
  Compressing objects:   1% (12/1185)
  Compressing objects:   2% (24/1185)
  Compressing objects:   3% (36/1185)
  Compressing objects:   4% (48/1185)
  Compressing objects:   5% (60/1185)
  Compressing objects:   6% (72/1185)
  Compressing objects:   7% (83/1185)
  Compressing objects:   8% (95/1185)
  Compressing objects:   9% (107/1185)
  Compressing objects:  10% (119/1185)
  Compressing objects:  11% (131/1185)
  Compressing objects:  12% (143/1185)
  Compressing objects:  13% (155/1185)
  Compressing objects:  14% (166/1185)
  Compressing objects:  15% (178/1185)
  Compressing objects:  16% (190/1185)
  Compressing objects:  17% (202/1185)
  Compressing objects:  18% (214/1185)
  Compressing objects:  19% (226/1185)
  Compressing objects:  20% (237/1185)
  Compressing objects:  21% (249/1185)
  Compressing objects:  22% (261/1185)
  Compressing objects:  23% (273/1185)
  Compressing objects:  24% (285/1185)
  Compressing objects:  25% (297/1185)
  Compressing objects:  26% (309/1185)
  Compressing objects:  27% (320/1185)
  Compressing objects:  28% (332/1185)
  Compressing objects:  29% (344/1185)
  Compressing objects:  30% (356/1185)
  Compressing objects:  31% (368/1185)
  Compressing objects:  32% (380/1185)
  Compressing objects:  33% (392/1185)
  Compressing objects:  34% (403/1185)
  Compressing objects:  35% (415/1185)
  Compressing objects:  36% (427/1185)
  Compressing objects:  37% (439/1185)
  Compressing objects:  38% (451/1185)
  Compressing objects:  39% (463/1185)
  Compressing objects:  40% (474/1185)
  Compressing objects:  41% (486/1185)
  Compressing objects:  42% (498/1185)
  Compressing objects:  43% (510/1185)
  Compressing objects:  44% (522/1185)
  Compressing objects:  45% (534/1185)
  Compressing objects:  46% (546/1185)
  Compressing objects:  47% (557/1185)
  Compressing objects:  48% (569/1185)
  Compressing objects:  49% (581/1185)
  Compressing objects:  50% (593/1185)
  Compressing objects:  51% (605/1185)
  Compressing objects:  52% (617/1185)
  Compressing objects:  53% (629/1185)
  Compressing objects:  54% (640/1185)
  Compressing objects:  55% (652/1185)
  Compressing objects:  56% (664/1185)
  Compressing objects:  57% (676/1185)
  Compressing objects:  58% (688/1185)
  Compressing objects:  59% (700/1185)
  Compressing objects:  60% (711/1185)
  Compressing objects:  61% (723/1185)
  Compressing objects:  62% (735/1185)
  Compressing objects:  63% (747/1185)
  Compressing objects:  64% (759/1185)
  Compressing objects:  65% (771/1185)
  Compressing objects:  66% (783/1185)
  Compressing objects:  67% (794/1185)
  Compressing objects:  68% (806/1185)
  Compressing objects:  69% (818/1185)
  Compressing objects:  70% (830/1185)
  Compressing objects:  71% (842/1185)
  Compressing objects:  72% (854/1185)
  Compressing objects:  73% (866/1185)
  Compressing objects:  74% (877/1185)
  Compressing objects:  75% (889/1185)
  Compressing objects:  76% (901/1185)
  Compressing objects:  77% (913/1185)
  Compressing objects:  78% (925/1185)
  Compressing objects:  79% (937/1185)
  Compressing objects:  80% (948/1185)
  Compressing objects:  81% (960/1185)
  Compressing objects:  82% (972/1185)
  Compressing objects:  83% (984/1185)
  Compressing objects:  84% (996/1185)
  Compressing objects:  85% (1008/1185)
  Compressing objects:  86% (1020/1185)
  Compressing objects:  87% (1031/1185)
  Compressing objects:  88% (1043/1185)
  Compressing objects:  89% (1055/1185)
  Compressing objects:  90% (1067/1185)
  Compressing objects:  91% (1079/1185)
  Compressing objects:  92% (1091/1185)
  Compressing objects:  93% (1103/1185)
  Compressing objects:  94% (1114/1185)
  Compressing objects:  95% (1126/1185)
  Compressing objects:  96% (1138/1185)
  Compressing objects:  97% (1150/1185)
  Compressing objects:  98% (1162/1185)
  Compressing objects:  99% (1174/1185)
  Compressing objects: 100% (1185/1185)
  Compressing objects: 100% (1185/1185), done.
  Total 1592 (delta 455), reused 1128 (delta 286)
  importing Git 

[9fans] i/o on a hangup channel asymmetry

2009-07-18 Thread Roman V. Shaposhnik
In the mom, why sky is blue department, here's a silly question:
is there any good reason that read(2) on a hangup channel returns
an error, while write(2) on a hangup channel terminates an application
(by generating a note, of course, which can be ignored, but still)?

Thanks,
Roman.

P.S. And btw, is there any way to make UNIX (POSIX) behave like Plan9
read(1)? The EOF on a hangup channel is actually misleading, its not
that the channel can be ever resumed...




Re: [9fans] C compiler question

2009-07-14 Thread Roman V Shaposhnik
On Mon, 2009-07-13 at 23:14 -0400, erik quanstrom wrote:
  Yes, but in my example - sorry - NeverDefined doesn't mean declared and
  defined elsewhere (or not) but not declared .and. not defined.
 
 true enough.  the patch i sent still rejects your construct.
 i'd still be interested to hear a perspective of someone with
 more experience with the c compiler.

rejecting the struct seems like the right thing to do as per
ISO/IEC 9899:1999 (http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf)
sec. 6.7.2.1 para. 2

A structure or union shall not contain a member with incomplete or function 
type (hence,
a structure shall not contain an instance of itself, but may contain a pointer 
to an instance
of itself), except that the last member of a structure with more than one named 
member
may have incomplete array type; such a structure (and any union containing, 
possibly
recursively, a member that is such a structure) shall not be a member of a 
structure or an
element of an array.

Thanks,
Roman.




Re: [9fans] C compiler question

2009-07-14 Thread Roman V Shaposhnik
On Tue, 2009-07-14 at 13:46 -0400, erik quanstrom wrote:
  rejecting the struct seems like the right thing to do as per
  ISO/IEC 9899:1999 
  (http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf)
  sec. 6.7.2.1 para. 2
  
  A structure or union shall not contain a member with incomplete or 
  function type (hence,
  a structure shall not contain an instance of itself, but may contain a 
  pointer to an instance
  of itself), except that the last member of a structure with more than one 
  named member
  may have incomplete array type; such a structure (and any union containing, 
  possibly
  recursively, a member that is such a structure) shall not be a member of a 
  structure or an
  element of an array.
 
 you're implying that the point of the plan 9 compilers
 is to toe the c99 line.

For the dirty corner of any language one is usually better off with
a written formal standard. Now, since Plan9 doesn't have such a
document, relying on a work done by c99 committee would seem like
a wise thing to do. 

And it is not like we are talking about C++ ISO standard here, the
C99 is actually quite beautiful (except may be a couple of places
like compound literals, and stuff).

What's your problem with such an approach? 

 also, a pointer to an incomplete type is used
 in many places in plan 9 libraries.

The above paragraph has nothing to do with pointers to incomplete types
(except for a clarification). Why are you bringing this up?

Thanks,
Roman.




Re: [9fans] pointers to incomplete types

2009-07-14 Thread Roman V Shaposhnik
On Tue, 2009-07-14 at 15:29 -0400, erik quanstrom wrote:
  The above paragraph has nothing to do with pointers to incomplete types
  (except for a clarification). Why are you bringing this up?
 
 assuming that pointers to incomplete types are
 themselves incomplete, and you haven't cited
 chapter and verse showing they are, i read that paragraph
 as saying that what plan 9 libraries do would be
 illegal, and therefore if we follow the standard,
 we'd need to remove Incomplete*s and replace
 them with void*s.
 
 if i'm wrong, can you explain how?

The pointer to the incomplete type is a pointer type,
not an incomplete type. It is part of the section
describing tye type system of C99 (section 6.2.5).

Look for derived types.

Thanks,
Roman.





Re: [9fans] data analysis on plan9

2009-07-09 Thread Roman V Shaposhnik
On Thu, 2009-07-09 at 15:56 -0300, Federico G. Benavento wrote:
  Also, something similar to GSL (http://www.gnu.org/software/gsl/)
 
 gsl-1.6.tbz   GNU Scientific Library, native port.
 
 /n/sources/contrib/pac/sys/src/lib/gsl-1.6.tbz

I've been meaning to ask this for a long time -- do we have a
catalog of things in contrib?

Thanks,
Roman.




Re: [9fans] Different representations of the same

2009-06-16 Thread Roman V Shaposhnik
On Fri, 2009-06-12 at 21:56 -0400, erik quanstrom wrote:
   I thought you might want a ctl file into which you write the
   representation you want and that magically creates a new file or
   directory. 
  
  Sure, but if *each* file can have more than one representation then
  where's the best place for the ctl thing to be? In each subdirectory?
  At the top of the hierarchy (accepting the full path names, of course)?
 [...]
  I'm simply asking for the best practices.
 
 generally, plan 9 fs pick a cannonical format if they can get
 away with it.
 
 the right answer is going to depend very strongly on one's
 exact constraints.
 
 if the client knows he's always going to want pngs, it might
 be good to pass png as the spec, as in 
   ; mount /srv/media /n/media png
 i suppose this would be a lot like content negotiation.

Exactly! From where I stand it seems that a particular
representation has to be either part of the name, or
it has to hide in a invisbible part of the protocol.

The benefits of having representation spec being part 
of the name are obvious -- you are alway know what you're
asking for, plus you can explicitly list representations
if there's more than one. 

The only drawback so far seems to be the fact that if one
needs flexibility, then every file becomes a subdirectory.
Not that it is scary or anything, but it smells too much
of resource forks (or may be I'm just too easily scared).

 there are some really wild examples running about.  hackery in
 upas that will serve up x(\.$e)? for any $e in certain circumstances.
 (see upas/ned/nedmail.c:/^plumb.)  the reason for this is so that
 upas/fs can serve up content with type unknown to upas/fs so
 that it can match plumbing rules that expect file extensions.
 the alternative would have been to add an explicitly declared filetype to
 the plumb messages and adding a ruletype to the plumb files.
 i suppose the idea was to not break everyone's plumbing rules.

Interesting...

Thanks,
Roman.




Re: [9fans] porting p9p to Google's NaCl

2009-06-12 Thread Roman V Shaposhnik
On Fri, 2009-06-12 at 13:04 -0700, Skip Tavakkolian wrote:
 anyone working on this?

What's so great about NaCl? Isn't it just a fancy way to start
QEmu/VirtualBox/VMWare?

Thanks,
Roman.




Re: [9fans] Different representations of the same

2009-06-12 Thread Roman V Shaposhnik
On Thu, 2009-06-11 at 06:49 +0200, lu...@proxima.alt.za wrote:
  but at that point it becomes no more appealing than the content
  negotiation techniques of HTTP.
 
 I thought you might want a ctl file into which you write the
 representation you want and that magically creates a new file or
 directory. 

Sure, but if *each* file can have more than one representation then
where's the best place for the ctl thing to be? In each subdirectory?
At the top of the hierarchy (accepting the full path names, of course)?

  Or use a clone style protocol which is more suitable for
 the automatic creation of new entities.

clone doesn't quite work for me in REST world (not that it can't
be made to work, it is just complicated).

 Of course, you may specifically want to go for a totally different
 approach, in which case I plead guilty to not understanding the exact
 nature of the solution you're seeking.

I'm simply asking for the best practices. Also, as I admitted in
my original email, I'm not really implementing this in 9P. So I
have an option that is native to the protocol I'm using: content
negotiation (http://en.wikipedia.org/wiki/Content_negotiation)

Now, since 9P doesn't have that I was simply wondering what would
be the agreed upon wisdom to have the same functionality 
_cleanly_ implemented in a 9P based synthetic filesystem.

Thanks,
Roman.




Re: [9fans] Different representations of the same file/resource in a synthetic FS

2009-06-10 Thread Roman V. Shaposhnik
В Втр, 09/06/2009 в 11:27 -0600, andrey mirtchovski пишет:
 I think I've mentioned this before, but on a few of my synthetic file
 systems here I'm using what you describe to slice a database by
 specific orderings. For example, I have a (long) list of resources
 which I'm managing in a particular environment each has an owner,
 type, status and a few static data containers. It's all backed by a
 relational database, but the file server presents different slices
 of that to external users, where the directory structure is rigidly
 defined as:
 
 /
  available/
  by-type/
  by-owner/
  inuse/
  ...
 
 with all data to fill the directories being dynamically pulled from
 the database.

This looks like a slightly different use case than what I'm worried
about. Mainly it seems that you don't really have to deal with
the representations of the same resource, your problem is how to
group these resources in a reasonable fashion. Essentially you're
mapping a relational database to a tree hierarchy.

In your case, the sooner you have the fork of
  by-this/
  by-that/
  
in your hierarchy -- the better.

My case is a flip side of that. In fact, my worst case scenario is
that I can't really predict all the representations of existing
resources down the road, thus it appears that I have to push
that part of a filename as close to an actual file as possible:
   /long-path/file.representation
I'm almost tempted to consider virtual extensions:
   /long-path/file ## default representation
   /long-path/file.gif
   
   /long-path/file.pdf
but at that point it becomes no more appealing than the content
negotiation techniques of HTTP.

Thanks,
Roman.




Re: [9fans] Configuring NFS

2009-06-09 Thread Roman V Shaposhnik
Hi John,

it took me sometime to go through the old backups but it seems
that the NFS setup is gone by now. You can still ask questions,
if you want to, but I won't be able to send you all the working
conf. files.

On Tue, 2009-06-02 at 11:34 -0700, John Floren wrote:
 I'd like to use the 9p mounting available in Linux, but it doesn't
 seem to work in this case.
 I try mount -t 9p glenda /mnt (glenda is my cpu/file server) and get:
 mount: wrong fs type, bad option, bad superblock on glenda,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.type helper program)
In some cases useful info is found in syslog - try
dmesg | tail  or so
 
 If I do mount -t 9p 192.168.18.180 /mnt, using the file server IP, I just 
 get
 mount: permission denied
 But dmesg shows [88617.144804] p9_errstr2errno: server reported
 unknown error cannot attach as none before authentication, ONLY when
 I use the IP address--nothing appears when I use the /etc/hosts alias
 glenda.
 
 What am I missing?

I have very little experience working with the in-kernel support for
9P. Somehow 9P and being a superuser feel mutually exclusive to me.
Thus, I can only recommend 9pfuse. It worked quite well for the limited
application I needed it for.

Thanks,
Roman.




[9fans] Different representations of the same file/resource in a synthetic FS

2009-06-09 Thread Roman V Shaposhnik
Working on a RESTful API lately (which is as close to working on a 9P
filesystem as I can get these days) I've been puzzling over this issue:
is content negotiation a good thing or a bad thing? Or to justify
posting to this list: what would be the proper 9P way of not only
representing different renditions of the same information in
a synthetic filesystem but also give consumer a chance to declare
*a set* of preferred ones.

Lets assume a classical example (modified slightly to fit 9P): 
a synthetic filesystem that serves images from a web cam. 
The very same frame can be asked for in different formats
(.gif, .png, .pdf, etc.). Is serving 
   /date/time/camera-id/gif/frame
   /date/time/camera-id/png/frame
   ...
   /date/time/camera-id/pdf/frame
and relying on reading 
   /date/time/camera-id
for the list of supported representations really better
than what HTTP content negotiation offers?

Thanks,
Roman.




Re: [9fans] Configuring NFS

2009-06-02 Thread Roman V. Shaposhnik
On Tue, 2009-06-02 at 10:30 -0700, John Floren wrote:
 Has anyone here successfully set up nfsserver to share Plan 9 files
 with Unix machines? The examples given in the man pages are rather...
 opaque. All I want to do is share one directory tree (/lib/music, in
 particular) with a number of independent Linux laptops and
 workstations.

I used it in combination with Solaris.

 I'm looking into NFS because it seems that it has about the lowest
 barrier to entry of all the possible file-sharing methods. Any other
 suggestions would be appreciated.

Whether or not to use NFS depends greatly on what is on the other end.
What kind of UNIX?

Thanks,
Roman.




Re: [9fans] Contrib index, snip

2009-04-26 Thread Roman V. Shaposhnik
On Thu, 2009-04-23 at 17:07 -0400, Anthony Sorace wrote:
   Unrelated, about a month ago I put together snip, [3] a little 
 pastebin-like
 service for sharing snippets of code (or whatever). Details on the
 snip's contrib
 page [4], but basic usage is snip /some/file to paste a snippet
 (/dev/snarf is a
 useful /some/file), which will return a path to the new snippet, or snip
 unadorned, which will list currently-available snippets.

Reminds me of gist:
http://gist.github.com/
http://www.sitepoint.com/blogs/2008/07/24/github-gist-is-pastie-on-steroids/

Thanks,
Roman.




Re: [9fans] Git Mirror

2009-04-26 Thread Roman V. Shaposhnik
On Thu, 2009-04-23 at 09:25 -0500, Eric Van Hensbergen wrote:
 I've started a public nightly mirror of (the source code bits) from
 sources using github: http://github.com/ericvh/plan-9/tree/master

Great! What's your policy for updating the tree w.r.t. the actual
sources?

Thanks,
Roman.

P.S. Not that it changes all that often, but still...




Re: [9fans] 9p2010

2009-04-26 Thread Roman V. Shaposhnik
On Thu, 2009-04-23 at 18:53 +0100, roger peppe wrote:
 i wonder how many things would break if plan 9 moved to
 a strictly name-based mapping for its mount table...

What exactly do you mean by *strictly* ?

Thanks,
Roman.




Re: [9fans] web server

2009-04-26 Thread Roman V. Shaposhnik
On Sun, 2009-04-19 at 00:13 +0200, Uriel wrote:
 My criticism was directed at how they are actually used in pretty much
 every web 'framework' under the sun: with some hideously messy ORM
 layer, they plug round Objects down the square db tables, and all of
 it to write applications which really are representing files (accessed
 over HTTP).

I'd say that the biggest reason for DB overuse by Web folks is the
fact that this is how they get persistence for their data while
still being able to build distributed applications.

In general, there are only two ways of having persistent data:
   * DBs
   * FSs
(well, ok, there's third these days)

FSs (under most OSes) have been way to clunky in the presence
of any kind of distribution. Hence the DBs.

 So by using files to store and model data not only avoids having to
 map a fs-like interface to a table oriented one, but the object
 oriented convolution in between.
 
 And that is short is what allows you to write a blog engine in three
 lines of rc, because rc and the rest of the toolkit that comes with it
 are designed to work on and with files and file paths.

FSs have a bit of a downside in how they make everything look like
tree structures. This is not that big of a deal when you can have
truly dynamic trees, but I still haven't seen how werc takes care
of that.

Thanks,
Roman.




Re: [9fans] web server

2009-04-26 Thread Roman V. Shaposhnik
On Sat, 2009-04-18 at 19:19 +0200, Enrico Weigelt wrote:
  yes.  there are several web servers, including one in the standard
  dist.  however, rails or merb might be something you'd have to do
  yourself.
 
 Did anyone already get java running on Plan9 ?

Java is too many things. Strictly speaking, a sane implementation
of JVM running natively on Plan9 could be a good thing. I'm not
sure whether Sun's JVM would be a managable thing to port, but
long time ago in another life I've seen a really good attempt
at [re]implementing JVM by some guys from Finland. Not sure the
project is still alive though.

Thanks,
Roman.




Re: [9fans] web server

2009-04-26 Thread Roman V. Shaposhnik
On Fri, 2009-04-17 at 12:54 +0100, maht wrote:
  How difficult would it be to use rails or merb in plan9? Is it feasible?
 Not Rails or merb or anything non Plan 9 but a few of us are building an 
 rc shell based system that works anywhere CGI and Plan 9 / plan9port is 
 available.
 
 http://werc.cat-v.org/

I was not aware of werc. Is there a good doc for it? 

Thanks,
Roman. 

P.S. So far it seems that werc wouldn't be able to manage
highly dynamic and volatile URI hierarchies as long as it
is run under anything  but Plan9. Ironically it doesn't
seem to run there.




Re: [9fans] J9P/StyxLib

2009-04-02 Thread Roman V Shaposhnik
On Wed, 2009-04-01 at 22:02 +0200, Bernd R. Fix wrote:
 As I wrote in an earlier mail, I am not too deep into this licensing
 stuff, but I know what I would like to have for my software:
 
 I want it Open-Source - that's my basic 'statement'. For me this means:
 I am willing to share my ideas (and code for that matter) with people
 interested in it. Im am even willing to give all people the right to
 base their own work on it and/or to modify it to their own liking. All I
 am asking for is that these people share their ideas and code just like
 I did - at least if they distribute their work. Essentially, that's it.
 
 Maybe I am wrong, but I had the impression that the GPL serves this
 purpose best - from my point of view at least.
 
 I understand that there are two cases which lead to problems with a GPL
 project, but I believe both cases can be solved:
 
 1.) You want to use it in an commercial project and can't/don't want to
 share your ideas and code.
 
 Assuming you are not a criminal, you can't include the software or
 derived work into your product - the GPL permits that. But you can
 still license a commercial use with the copyright holder(s) in such
 cases. If you don't share ideas, at least share your money.
 
 2.) You have an OS project with a different, incompatible license
 and want to include a GPL project or base some work on it.
 
 I am sure that this problem occurred many times in the past; maybe
 there even exists a 'best practice' approach how to deal with this.
 
 To be honest: I don't think that the first case is an argument against
 the GPL - not for me. I am more worried about the second case.
 
 So my question to you licensing experts: is there a better license that
 follows my basic statement (see above) and allows better integration
 into other OS licenses? If I have a better license model, I am certainly
 willing to change to it.

There's a choice of licenses available that fit a pretty wide range of
goals than an individual might have. Now, my personal experience have
taught me that you have to always look at the price you pay for your
beliefs. For me it boils down to (in the order of relationship):
   * GPL severely reduces the applicability of the code that I'm
 producing. One major consequence of that is my code is not
 taken places. The sheer pleasure of seeing your name on
 the About/License dialog of the iPhone/Windows (and BSD makes them
 do that if they use your code) is much more important to me
 than the closed sourced nature of the device or an application
 that uses my code.
   * Volume drives value. If your code is taken places somehow the
 stream of ideas, offers, etc. follows. In fact, I'd say if your
 code is *not* widespread because of the licensing issues, you
 have less of a chance to collaborate on it with somebody.
   * Which bring us to the final point -- if you stuff is good idea
 folks who want it are likely to re-implement it no matter what.
 They'd rather not waste their time and take it from you, but if
 your licensing doesn't allow them to -- they will. At that point
 you are no longer the host of the party you are standing in line
 withe everybody else to be let in. Case in point: ZFS on Linux.

These three things tilt me strongly in favor of BSD. Your mileage may
vary, of course.

Oh, and here's one final point: it seems to me that (at least!) LGPL
would be as good for your intended purposes as GPL is, without the nasty
side-effects.

Thanks,
Roman.

P.S. Arguably, the lets share things and figure out how to
profit later model could be blamed for Sun's performance as of late.
I'm not a businessman I wouldn't know. What I know though, is that
it makes me stick with the company and refuse Google interviews
and things like that. Somehow it just feels good. I don't know
any other place where the same level of transparency and openness
would be possible (if you do -- let me know ;-)).




Re: [9fans] J9P/StyxLib

2009-04-01 Thread Roman V Shaposhnik
This is seriously cool and must be added to:
   http://9p.cat-v.org/implementations

Thanks,
Roman.

On Wed, 2009-04-01 at 13:43 +0200, Bernd R. Fix wrote:
 Hi,
 
 I just want to announce that a new 9P-related framework has been
 published (pre-alpha status, PoC). You find the current project
 documentation on the project homepage http://aspector.com/~brf/J9P;;
 the published packages are available on SourceForge:
 https://sourceforge.net/projects/j9pstyxlib/;.
 
 J9P is a pure Java implementation of the 9P(2000) protocol including
 authentication and message digests/encryption. It comes with a generic
 9P server that publishes namespaces that are assembled from Java
 objects. File operations in the namespace are mapped to Java method
 calls; the called object handles the operation accordingly. This way it
 is quite easy to integrate non-9P services (like SQL databases) into 9P
 networks.
 
 Have fun, Bernd.




Re: [9fans] J9P/StyxLib

2009-04-01 Thread Roman V Shaposhnik
On Wed, 2009-04-01 at 18:49 +0200, Bernd R. Fix wrote:
 David Leimbach schrieb:
  Anyway to get a non GPL v3 licensed version from you?  I may not be able to
  use this implementation for what I want otherwise.
  I was actually planning on doing this myself, anyway at one point, and
  BSDLng it.
 
 I guess there is a clash of licenses between your project and J9P. So
 what licence are you using (I assume it is no commercial project) and
 what makes it problematic? I am not too deep into this licensing business.
 
 As (currently) sole copyright holder I can make exceptions, but I feel
 that this problem should be solved in a more general way. Any ideas?
 Feel free to contact me via private mail on this.
 
 I thought about using the LGPL for the project and might reconsider that
 once a stable stage is reached.

Not implying anything, just a question: what made you pick GPL in the
first place?

Thanks,
Roman.

P.S. Personally, I try to license my stuff under as non-restrictive
license as possible (BSD or at least LGPL) that still protects me.
That said, I do understand people who use GPL as a statement, not
because the license is particularly good.




Re: [9fans] plan9 for calculations

2009-03-27 Thread Roman V. Shaposhnik

On 03/27/09 14:31, Rudolf Sykora wrote:

Hello everybody,

I noticed there are some thoughts about using plan9 on supercomputers.
For me supercomputers are usually used to do some heavy calculations.
And this leads me to a question. What software is then used for
programming these calculations? (I mean e.g. linear algebra, i.e.
matrix, calculations.) Where can one read about that?
  

If you are talking about established practices then supercomputing *almost*
always means Infiniband+MPI (managed by a grid engine).
On fat nodes (the kind of machines Sun used to sell) you might also find
OpenMP. But there will always be MPI, since doesn't mean how fat the
node is -- the cluster is fatter. On the language side I've seen 
predominantly

Fortran and C++, although Ron was telling me horror stories about Python
and some other goo. As far as the libraries go: linpack is almost
always there, but the good place to take a look at what's relevant is here:
  http://docs.sun.com/app/docs/doc/819-0497

PS.: It could be that plan9, being more a os-research system than
anything else, is simply no suitable for such a use (there are no
plotting libraries, other utilities). Perhaps it's not a good idea at
all to try to use plan9 like that because it would be more work than
anything. Maybe using linux for such things with all its tools is just
ok. If you share this idea, just say it too, please.
  
My personal take is that Plan9's forte might be the sane clustering of 
things.

MPI and grid engines is really quite horrible, but it is pervasive.

Thanks,
Roman.




Re: [9fans] request for more GSoC project suggestions

2009-03-25 Thread Roman V. Shaposhnik

On 03/25/09 02:12 PM, Charles Forsyth wrote:
A modern cfront is nearly impossible.  Templates make it hella-hard.   



really? how is that?
  
Everything is possible. It is software, after all. But it is not 
practical. The
original cfront was, to some extent, a cpp(1) on steroids. AFAIR, it 
operated

by manipulating C source code.

With modern C++ things like inlines, templates and concepts operate at
a level of AST. I guess one could use C for an AST representation, but
that would be a pretty daring feat.

Thanks,
Roman.




Re: [9fans] THnX status?

2009-03-16 Thread Roman V. Shaposhnik

On 03/16/09 06:01 PM, ron minnich wrote:

skip lguest.

What I'm looking at now is tinycore linux: tinycorelinux.org and vx32.
Much easier. Makes a nice terminal. I have to add some things to it,
it doesn't come w/wireless.
  
That is all fine for the terminal (I suppose you really mean running 
tinycorelinux.com
on bare metal and running 9vx on top of it) but shouldn't there also be 
a [para]virtualization

solution for Plan9?

You say 'skip lguest' -- that's fine. But what's the best alternative 
for running Plan9 server

on the same bare metal that needs to run something else?

Thanks,
Roman.



Re: [9fans] threads vs forks

2009-03-06 Thread Roman V Shaposhnik
Clojure is definitely something that I would like to play
with extensively. Looks very promising from the outset,
so the only question that I have is how does it feel
when used for substantial things.

Thanks,
Roman.

P.S. My belief in it was actually reaffirmed by a raving
endorsement it got from an old LISP community. Those
guys are a bit like 9fans, if you know what I mean ;-)


On Tue, 2009-03-03 at 10:38 -0800, Bakul Shah wrote:
 On Tue, 03 Mar 2009 10:11:10 PST Roman V. Shaposhnik r...@sun.com  wrote:
  On Tue, 2009-03-03 at 07:19 -0800, David Leimbach wrote:
  
   My knowledge on this subject is about 8 or 9 years old, so check with 
   your 
  local Python guru
   
   
   The last I'd heard about Python's threading is that it was cooperative
   only, and that you couldn't get real parallelism out of it.  It serves
   as a means to organize your program in a concurrent manner.  
   
   
   In other words no two threads run at the same time in Python, even if
   you're on a multi-core system, due to something they call a Global
   Interpreter Lock.  
  
  I believe GIL is as present in Python nowadays as ever. On a related
  note: does anybody know any sane interpreted languages with a decent
  threading model to go along? Stackless python is the only thing that
  I'm familiar with in that department.
 
 Depend on what you mean by sane interpreted language with a
 decent threading model and what you want to do with it but
 check out www.clojure.org.  Then there is Erlang.  Its
 wikipedia entry has this to say:
 Although Erlang was designed to fill a niche and has
 remained an obscure language for most of its existence,
 it is experiencing a rapid increase in popularity due to
 increased demand for concurrent services, inferior models
 of concurrency in most mainstream programming languages,
 and its substantial libraries and documentation.[7][8]
 Well-known applications include Amazon SimpleDB,[9]
 Yahoo! Delicious,[10] and the Facebook Chat system.[11]
 




Re: [9fans] threads vs forks

2009-03-04 Thread Roman V Shaposhnik
On Tue, 2009-03-03 at 23:24 -0600, blstu...@bellsouth.net wrote:
  it's interesting that parallel wasn't cool when chips were getting
  noticably faster rapidly.  perhaps the focus on parallelization
  is a sign there aren't any other ideas.
 
 Gotta do something will all the extra transistors.  After all, Moore's
 law hasn't been repealed.  And pipelines and traditional caches
 are pretty good examples of dimishing returns.  So multiple cores
 seems a pretty straightforward approach.

Our running joke circa '05 was that the industry was suffering from
the transistor overproduction crisis. One only needs to look at other
overproduction crisis (especially the food industry) to appreciate
the similarities.

 Now there is another use that would at least be intellectually interesting
 and possible useful in practice.  Use the transistors for a really big
 memory running at cache speed.  But instead of it being a hardware
 cache, manage it explicitly.  In effect, we have a very high speed
 main memory, and the traditional main memory is backing store.
 It'd give a use for all those paging algorithms that aren't particularly
 justified at the main memory-disk boundary any more.  And you
 can fit a lot of Plan 9 executable images in a 64MB on-chip memory
 space.  Obviously, it wouldn't be a good fit for severely memory-hungry
 apps, and it might be a dead end overall, but it'd at least be something
 different...

One could argue that transactional memory model is supposed to be
exactly that.

Thanks,
Roman.




Re: [9fans] threads vs forks

2009-03-03 Thread Roman V. Shaposhnik
On Tue, 2009-03-03 at 07:19 -0800, David Leimbach wrote:

 My knowledge on this subject is about 8 or 9 years old, so check with your 
 local Python guru
 
 
 The last I'd heard about Python's threading is that it was cooperative
 only, and that you couldn't get real parallelism out of it.  It serves
 as a means to organize your program in a concurrent manner.  
 
 
 In other words no two threads run at the same time in Python, even if
 you're on a multi-core system, due to something they call a Global
 Interpreter Lock.  

I believe GIL is as present in Python nowadays as ever. On a related
note: does anybody know any sane interpreted languages with a decent
threading model to go along? Stackless python is the only thing that
I'm familiar with in that department.

Thanks,
Roman.




Re: [9fans] Calling vac from C

2009-02-24 Thread Roman V. Shaposhnik
On Tue, 2009-02-24 at 10:54 -0500, erik quanstrom wrote:
  about 5 years ago i took a class on performance tuning Solaris.
  
  The instructor claimed that fork was expensive because accounting is never 
  really turned off, just piped to /dev/null.  there is no accounting 
  overhead for threads.
  
  I never bothered to verify this, but now that this comes up, I'd tempted.
 
 there's no need to guess.  here's the source code.
 
 http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/os/fork.c
 
 cfork is ~525 lines long and seems to take the curious tack of
 forking all the lwps associated with a process. 

that would be forkall(), not fork1()/fork()

Thanks,
Roman.




Re: [9fans] Calling vac from C

2009-02-24 Thread Roman V. Shaposhnik
On Tue, 2009-02-24 at 11:22 -0500, erik quanstrom wrote:
   cfork is ~525 lines long and seems to take the curious tack of
   forking all the lwps associated with a process. 
  
  that would be forkall(), not fork1()/fork()
 
 my mistake.  i assumed that since isfork1 was
 a flag, that it was not the normal path through
 the code.  silly me.
 
 so where's the mythical accounting?

It could have been the old accounting. Solaris 10
changed a lot of that and made things like microstate
accounting on by default, thus, possibly eliminating
the kind of bottlenecks the instructor was referring
to. More on that here:
   http://blogs.sun.com/eschrock/entry/microstate_accounting_in_solaris_10

Thanks,
Roman.





Re: [9fans] Venti by another name

2009-02-24 Thread Roman V. Shaposhnik
On Wed, 2009-02-25 at 01:26 +0100, Enrico Weigelt wrote:
 But I really can't tell anything about the space saving.
 (one of the primary decision for venti is that it will be 
 clustered some day ... ;-o)

Clustered? 

Thanks,
Roman.




Re: [9fans] source browsing via http is back

2009-02-12 Thread Roman V. Shaposhnik
On Thu, 2009-02-12 at 07:49 -0500, erik quanstrom wrote:
 exactly.  the point i was trying to make, and evidently
 was being too coy about, is that 330 odd gb wouldn't
 be as useful a number as the sum of the sizes of all the
 new/changed files from all the dump days.  this would
 be a useful comparison because this would give a
 measure of how much space is saved with venti over
 the straightforward algorithm of copying the changed
 blocks, as ken's fileserver does.

I'm confused. Since when did kenfs entered this conversation?
I thought we were talking about how sources are managed today
and how replica might make you waste some bandwidth (albeit,
not all that much given how infrequently sources themselves
change).

Thanks,
Roman.




Re: [9fans] Plan 9 source history (was: Re: source browsing via http is back)

2009-02-11 Thread Roman V. Shaposhnik
On Wed, 2009-02-11 at 13:19 -0500, Venkatesh Srinivas wrote:
 On Wed, Feb 11, 2009 at 07:07:48PM +0100, Uriel wrote:
 Oh, glad that somebody found my partial git port useful, I might give
 it another push some time.
 
 Having a git/hg repo of the plan9 history is something I have been
 thinking about for a while, really cool that you got something going
 already.
 
 Will you provide a standard git web interface (and a 'native' git
 interface for more efficient cloning)?
 
 
 We'll have a git web interface up pretty soon, within this week.

Since its a more or less r/o Git repo, why not also provide a mirror on
one of these guys:
http://github.com/
http://repo.or.cz/
http://gitorious.org/

Not only would it reduce the stress on your servers, but it'll also 
enable some of the source-browsing features that these sites
implement.

I can set things up myself, as long as you give me *some* kind of
access to your Git repo.

Thanks,
Roman.




Re: [9fans] Plan 9 source history (was: Re: source browsing via http is back)

2009-02-11 Thread Roman V. Shaposhnik
On Tue, 2009-02-10 at 20:43 -0500, Nathaniel W Filardo wrote:
 Incidentally, a git repository of the crawls, from 2002/1212 to 2009/0205,
 is available at http://mirrors.acm.jhu.edu/trees/plan9native/ .  Git gets
 the data down to 165M after a gc run, so perhaps it's a better idea than a
 venti-based mirror. 

Where did 165M came from? The history itself seems to be only about 58M
or so:
  $ wget 
http://mirrors.acm.jhu.edu/trees/plan9native/.git/objects/pack/pack-afe021812ab52f698895941f8eb5ad4e3d75020e.pack
  $ ls -l pack-afe021812ab52f698895941f8eb5ad4e3d75020e.pack 
  -rw-rw-r--   1 rs76089  staff61039150 Feb 11 06:40 
pack-afe021812ab52f698895941f8eb5ad4e3d75020e.pack

And, after the following simple minded manipulations:
  $ git init
  $ git unpack-objects  pack*
  $ git checkout -b master 68e58814202bccfbd7186962daedd754ae76d7df
  warning: You appear to be on a branch yet to be born.
  warning: Forcing checkout of 68e58814202bccfbd7186962daedd754ae76d7df.
  Checking out files: 100% (14229/14229), done.
  Already on master
  $ git repack -ad --window 100 --depth 100
  Counting objects: 39971, done.
  Compressing objects: 100% (39354/39354), done.
  Writing objects: 100% (39971/39971), done.
  Total 39971 (delta 25278), reused 0 (delta 0)

Made it even smaller (you can fine tune it even more, based on
usage requirements):
  $ ls -l .git/objects/pack/*.pack
  -r--r--r--   1 rs76089  staff57694396 Feb 11 11:03 
.git/objects/pack/pack-afe021812ab52f698895941f8eb5ad4e3d75020e.pack

  I haven't managed to make my version of Uriel's port
 (thanks for the start! :) ) of git do the right thing in enough cases yet,
 so the git repo may not be updated for a while, but I figured somebody might
 want to play with it in the interim.

The coolest things, of course, would be to have a way of running git on
the bell labs end. But doing a replica and repacking everything locally
is not bad at all.

Thanks,
Roman.




Re: [9fans] source browsing via http is back

2009-02-10 Thread Roman V. Shaposhnik
On Tue, 2009-02-10 at 16:32 -0500, erik quanstrom wrote:
  I again propose that sources should be mirrorable via venti (and venti/copy
  -f); the nightly snapshots would be walked with auth/none vac into a
  publically readable venti (venti/ro proxy) and the scores published (and
  signed).  In order to make this more palatable, it may be worth developing a
  venti proxy that attempts to pull blocks from closer ventis rather than
  further ones and to make sources' public venti artificially further away
  (induce a delay of half a second or something per Tread).  I've some
  tentative writeup on https://wiki.ietfng.org/pub/Plan9/VentiMirror and even
  some code flying locally but nothing about which to be proud.
 
 i'm still not following why replica won't work?  getting in underneath
 the fs seems to require some extra justification and it seems to require
 some very low-level modifications.  and yet the file interface provides
 what i think one would need for such a project.  what is wrong with
 replica that can't be reasonably fixed?

since replica requires some (albeit automatic) periodic work on the
server end it means that there's one more thing for bell lab folks
to care about and maintain. that said, a brand new Venti proxy or
what not will probably be even worse for them :-(

Thanks,
Roman.




Re: [9fans] FileServer grid

2009-02-10 Thread Roman V. Shaposhnik
On Tue, 2009-02-10 at 09:06 +0100, Giacomo Tesio wrote:
 So far it seems that there are no ready-made 9P-based
 solutions available for what
 you have in mind. At least I don't know of any.
 
 In any solution available there are costs to pay (economical or
 temporary ones).

On the side of existing tools/solutions you may find this one
interesting: http://www.ultramonkey.org/

Thanks,
Roman.






Re: [9fans] source browsing via http is back

2009-02-10 Thread Roman V. Shaposhnik
On Tue, 2009-02-10 at 16:55 -0500, erik quanstrom wrote:
   i'm still not following why replica won't work?  getting in underneath
   the fs seems to require some extra justification and it seems to require
   some very low-level modifications.  and yet the file interface provides
   what i think one would need for such a project.  what is wrong with
   replica that can't be reasonably fixed?
  
  since replica requires some (albeit automatic) periodic work on the
  server end it means that there's one more thing for bell lab folks
  to care about and maintain. that said, a brand new Venti proxy or
  what not will probably be even worse for them :-(
 
 the replica logs are already generated and already required
 for existing functionality — pull — to work.

What do you mean they are already generated? The script(s) try to
generate them. When they fail they need a manual intervention.
That was my entire point.

Thanks,
Roman.




Re: [9fans] source browsing via http is back

2009-02-10 Thread Roman V. Shaposhnik
On Tue, 2009-02-10 at 17:13 -0500, Nathaniel W Filardo wrote:
 On Tue, Feb 10, 2009 at 01:51:47PM -0800, Roman V. Shaposhnik wrote:
  since replica requires some (albeit automatic) periodic work on the
  server end it means that there's one more thing for bell lab folks
  to care about and maintain. that said, a brand new Venti proxy or
  what not will probably be even worse for them :-(
 
 Under the proposed scheme, clients and maybe mirrors, not sources, run the
 new proxy.  Sources runs only a venti and venti/ro, unmodified, to allow
 clients and mirrors to fetch blocks, and auth/none vac.  Is this unreasonable?

It would be completely reasonable (and I wager *less* work for bell labs
folks than keeping an eye on replica) if that venti was only hosting
blocks coming from sources. As far as I know that's not the case.

Thanks,
Roman.




Re: [9fans] source browsing via http is back

2009-02-10 Thread Roman V. Shaposhnik
On Tue, 2009-02-10 at 17:10 -0500, erik quanstrom wrote:
  On Tue, Feb 10, 2009 at 04:32:18PM -0500, erik quanstrom wrote:
   i'm still not following why replica won't work?  getting in underneath
   the fs seems to require some extra justification and it seems to require
   some very low-level modifications.  and yet the file interface provides
   what i think one would need for such a project.  what is wrong with
   replica that can't be reasonably fixed?
  
  I wish to enable mirrors of sourcesdump as well.  Replica would do lots of
  extra work and transfer, vs. venti/copy -f, yes?
 
 what extra work would that be, and if there is extra work, could you explain
 why this would be a problem?

Correct me if I'm wrong, but my understanding of how pull works is
that it pulls files in their entirety (IOW: cp /n/sources/... /)
which means that shared blocks get copied as many times as there
are files sharing them.

Thanks,
Roman.




Re: [9fans] FileServer grid

2009-02-06 Thread Roman V. Shaposhnik
On Fri, 2009-02-06 at 23:26 +0100, Giacomo Tesio wrote:
 Hello every one...
 In a context of really heavy load and high availability needs, I'm
 evaluating plan 9 to implement a fileserver grid to be used by a web
 server for temporary storage (session's serializations, for example).

What OS do you web servers run under?

 I'd like to build a Plan 9 grid exposing a unique filesystem mounted
 by all the web servers.

Are you going to talk to this filesystem using 9P or something else?

 Each session could be accessible from any web server instantly, but
 what if a fileserver in the grid break?
 Is there a way to mantain such a session (actually the file storing
 the session data) available by keeping it sincronized beetween the
 Plan 9 fileservers?

This is unclear. Please restate.

Thanks,
Roman.




Re: [9fans] Some arithmetic [was: Re: Sources Gone?]

2009-02-05 Thread Roman V. Shaposhnik
On Thu, 2009-02-05 at 12:41 -0500, erik quanstrom wrote:
  http://www.google.com/search?q=09+f9;
 
 is that a legal url?

I don't think it is a legal URL, but most browsers
will turn it into a legal one before issuing a 
GET request.

Thanks,
Roman.

P.S. Or am I missing some kind of a joke here? ;-)




Re: [9fans] Some arithmetic [was: Re: Sources Gone?]

2009-02-05 Thread Roman V. Shaposhnik
On Thu, 2009-02-05 at 10:22 -0800, Micah Stetson wrote:
   http://www.google.com/search?q=09+f9;
 
  is that a legal url?
 
  P.S. Or am I missing some kind of a joke here? ;-)
 
 Intentional or not, it's a very good joke.

but...but...erik always adds that look-i-am-using-plan9-smiley
to all of his jokes. i'm so confused...

Thanks,
Roman.




Re: [9fans] Sources Gone?

2009-02-04 Thread Roman V. Shaposhnik
On Tue, 2009-02-03 at 19:27 +0200, lu...@proxima.alt.za wrote:
 But I do not recall the details and I think Roman is the one who 
 needs to recap this discussion and bring it to a conclusion.

Wow! This ended up being quite a thread ;-) I'll try to comment on
a couple of things first, in this single email, and then try to
recap:

erik if you want users, groups and access control, isn't the fs the
erik place to go?  i'm trying to see how doing fsey things at the
erik venti level would be useful, but i don't see it yet.

Yes, as I pointed in my prior reply to you the access control
sure does belong to the FS. But...

roger the attraction, for me at any rate, is that certain operations
roger are really cheap and easy in venti, but expensive in the fs.
roger cloning/copying a multi-gigabyte tree being the canonical 
roger example.

...if you completely firewall venti by the fossil, you can longer get
the benefits roger is talking about (and these benefits is precisely
what I'm after). Essentially, replica of a venti-backed fossils is
only needed because there's no way to get to venti. All you see
is an FS interface.

Now, this conversation made me realize that since there has to be a
proxy anyway (just as Anthony, I'm not fully convinced by roger's
proposal) and since most of what this proxy needs to care about is
FSish type of things may be the answer is extending fossil, not
venti. IOW, augmenting fossil with a set of API that would let two
ventis exchange filesystem blocks, but only as long as the user is
authorized to do so.

This takes care of Erik's remark that venti doesn't know what's in
the blocks. Sure it doesn't. But now fossil (as a proxy) does. 

Thanks,
Roman.




Re: [9fans] Sources Gone?

2009-02-04 Thread Roman V. Shaposhnik
On Tue, 2009-02-03 at 17:30 +, Brian L. Stuart wrote:
  information can't leak in principle, but root scores are dangerous, which
  is why open-access venti servers are problematic - if such a score
  *does* happen to leak, then unconditional access to all your data has
  also leaked.
 
 If I understand correctly, this line of discussion
 is primarily motivated by the idea of an open-access
 venti server.

Correct. But with this caveat: I only care about
the blocks that are part of vac structures. Erik
keeps reminding us that venti doesn't care about
what's in the blocks. True. But now, I've drawn
a line. There's only one type of blocks that
I'm interested in -- blocks which are part of
vac structures.

 The venti itself doesn't need to be open-
 access if there's a proxy server that is.  

Absolutely!

 Maybe I'm misunderstanding the problem we're trying
 to solve, but if the objective is to provide open
 venti access but the necessary protection mechanisms
 really belong elsewhere, it seems reasonable to
 create the elsewhere and not incorporate them into
 venti.

Looks like we're in a complete agreement. And thanks
for the summary!

Thanks,
Roman.




Re: [9fans] Pegasus 2.6 is released

2009-02-02 Thread Roman V. Shaposhnik
On Mon, 2009-02-02 at 13:22 -0800, John Barham wrote:
   You're missing the beauty of 9p. Who needs dynload() when you have
 mount()?
 
 Mount allows me to add new names to the process namespace.  Dynload
 allows me to call functions or access data in a library that is not
 known to the process (e.g., scripting language interpreter) until
 runtime.  They solve different problems.

Depends on your point of view. Except for accessing data directly
in the same address space, dynload() is just a way of doing fast
RPC. In that line of thought, 9P offers you a very similar mechanism.

I think the most obvious example of how 9P can be used to provide the
kind of extensibility that folks usually associate with dynload()
is factotum. Especially if you compare it with things like PAM.

Thanks,
Roman.




Re: [9fans] Pegasus 2.6 is released

2009-02-02 Thread Roman V. Shaposhnik
On Mon, 2009-02-02 at 13:32 -0800, David Leimbach wrote:

 I mean sure you could use FTP to transfer files, but the old shell
 based tools are automagically plugged in with network capabilities
 when they deal with a FTP backed namespace right?  So without any
 binary loader capabilities cp mv and other existing small
 programs are now plugged in.

Right. That plus the fact that the plugin is now generally available
over the network makes it much more interesting.

In fact, these current trend towards REST in web services seems
to be a validation of 9P view of the world.

Thanks,
Roman.




Re: [9fans] Pegasus 2.6 is released

2009-02-02 Thread Roman V. Shaposhnik
On Mon, 2009-02-02 at 14:12 -0800, ron minnich wrote:
 On Mon, Feb 2, 2009 at 1:32 PM, David Leimbach leim...@gmail.com wrote:
 
  They solve the same class of problems, if you step back far enough.
  If your application's mechanism of dealing with processing is to use the
  namespace, then binding new functionality over old is roughly equivalent to
  a plugin mechanism.
 
 
 I hate to be the one to bring this up but ... if you are providing
 some extended (e.g.) math functionality to a program with a shared
 library, people are going to be upset with you if you argue that it
 can be done with RPC.
 
 I hope the reason is obvious :-)

It is. It is a trivial case, after all. In non-trivial ones, the
same kind of discussion used to be quite popular in OpenMP vs.
MPI circles. And I shouldn't be the one to tell you where it
is going, right?

Thanks,
Roman.




Re: [9fans] Pegasus 2.6 is released

2009-02-02 Thread Roman V. Shaposhnik
On Mon, 2009-02-02 at 23:22 +0100, Francisco J Ballesteros wrote:
 But can't you `script' by calling an external program, sending it your
 input, and reading its output?

Well, the way I see it: exec'ing is just a way to get to a transient
channel. Its no different from that very same channel being present
permanently in /srv or /mnt/factotum/rpc. There's *slightly* less
overhead with pipes, but that's about it.

Thanks,
Roman.




Re: [9fans] Sources Gone?

2009-02-02 Thread Roman V. Shaposhnik
On Fri, 2009-01-30 at 07:18 +0200, lu...@proxima.alt.za wrote:
  Some level of smartness in how block traversal is made needs to
  be there.
 
 That involves partitioning, which defeats the fundamental mechanics of
 venti.  

I don't think it does. At least not in a way that is obvious to me.
The one and only fundamental limitation of the current interface
offered by venti is that I can give it a score to something that
doesn't belong to me and it gives me the information back. It is
the limitation of the API, not the way data is managed. IOW, if
a block that I genuinely own happens to also be referenced from
a hierarchy that I do NOT have access to -- its ok.

 It then becomes preferable to run distinct venti services,
 which is the only way in which different backing stores can be used at
 this stage.

Hm. I guess I need to understand what is the problem you seem to
be worried about.

Thanks,
Roman.




Re: [9fans] 9vx as a cpu server?

2009-02-02 Thread Roman V. Shaposhnik
On Sun, 2009-02-01 at 20:27 -0800, Russ Cox wrote:
 as for listening, 9vx by default uses the host ip stack,
 and plan 9 services tend to use their own port numbers,

And sometimes these port # tend to be  1024 which means that
you have to run 9vx as root.

Thanks,
Roman.




Re: [9fans] Sources Gone?

2009-02-02 Thread Roman V. Shaposhnik
On Mon, 2009-02-02 at 17:43 -0500, erik quanstrom wrote:
  I don't think it does. At least not in a way that is obvious to me.
  The one and only fundamental limitation of the current interface
  offered by venti is that I can give it a score to something that
  doesn't belong to me and it gives me the information back. It is
  the limitation of the API, not the way data is managed. IOW, if
  a block that I genuinely own happens to also be referenced from
  a hierarchy that I do NOT have access to -- its ok.
 
 ownership doesn't mean anything at the venti level.  it really
 is just a virtual disk drive with lba80 content addressing.
 one doesn't own blocks on a regular disk drive, either.

Depends on how you look at it. From the drive's perspective -- you're
right. Nobody owns blocks. However, if a certain block happens
to be part of a filesystems that uses this particular drive then
the ownership can and will be tracked.

 suspending the preceeding logic for a bit, supposing that
 you did track ownership, then

No need to suspend the logic and run this thought experiment. I have
no interest in assigning ACL to blocks. 

That's why I said that the API that venti currently has is ill-suited
for the kind of public usage I have in mind. That doesn't mean that it
should be replaced or mutilated. It simply means firewalling in a spirit
of venti/ro

The proxy API will have to track the ownership. And it is very likely to
be more hierarchy-oriented, than stand-alone blocks-oriented.

Thanks,
Roman.




Re: [9fans] Sources Gone?

2009-01-29 Thread Roman V. Shaposhnik
On Thu, 2009-01-29 at 13:12 +0100, Uriel wrote:
 The issues with replica go beyond its tendency to wipe out complete
 file systems.
 
 It includes, among other things, the performance of a drunken slug,
 and as you well point out, the skils of a schizophrenic monkey for
 managing local changes.

Full disclosure: I don't use replica. But...

 All this has been solved by git and hg; and git and hg would *never*
 wipe out your local files simply because the backing store for the
 repository you are pulling from happens to break, the pull simply
 would fail and leave your local repo intact, and when the remote repo
 is brought back, all would work just fine.

...I'm really somewhat of a Git buff. So I'm obviously interested
in this discussion. 

As was pointed out in a different thread Git architecture is, in fact,
quite close to venti/fossil. Venti is the immutable hash addressed
history and fossil is the index. Thus the way Git transfers history
between the repositories is conceptually very similar to transferring
venti blocks that can be reached from a designated set of VtRoots.

This has a number of useful properties in Git: the state of the history
repository has nothing to do with the state of your local write
buffer (index). You may fetch quite a few additional blocks of history,
but that doesn't force you to reformat your write buffer. In fact,
it is usually a good idea to: fetch, inspect and only then do 
a merge.

replica, on the other hand, tries to not rely on anything but its own
functionality, effectively making it possible to manage changes backed
by something other than fossil/venti. Replica is trying to be more
like rsync, than Git.

I've come to realize that this might be, in fact, the key problem.

Git itself is not afraid to admit that it *is* a filesystem. Linus
said it explicitly on quite a few occasions. We already have a
filesystem. Do we need another one?

 Oh, and they are both *excellent* at helping one keep track of local
 changes without messing everything up.
 
 Of course they also help with things like merges, changelog
 generation, etc. but I suspect those things are not really wanted.

And that is a complementary problem to all of the above: your history
is as good (and as helpful in doing merges, etc.) as is the effort
put into creating it in the first place. A conversation on this list 
a month or so ago completely convinced me that those who make changes
to Plan9 sources see very little value in maintaining history that way.

Thanks,
Roman.




Re: [9fans] Sources Gone?

2009-01-29 Thread Roman V. Shaposhnik
On Thu, 2009-01-29 at 08:15 -0800, ron minnich wrote:
 On Thu, Jan 29, 2009 at 4:12 AM, Uriel urie...@gmail.com wrote:
 
  All this has been solved by git and hg; and git and hg would *never*
  wipe out your local files simply because the backing store for the
  repository you are pulling from happens to break,
 
 Have you used git much?

I do ;-)

 Sure, it's nice. Have you tried it when it
 hits 6 gbyte size as we have here, and repo is filled with binaries,
 not just source?

We hit exactly those very problems when trying to evaluate Git
for a huge internal project with a history going back to '89. We found
very attractive solutions in Git (but not in Mercurial or Bazaar at that
time) for all the issues you've identified. YMMV, of course, but I can
share more of my experience off the list, since the subject has 
absolutely nothing to do with Plan9.

Thanks,
Roman.

P.S. In all fairness, the evaluation happened about a year ago. I hear 
that Mercurial has improved since then. It is also possible that Git
deteriorated, although I doubt it.




Re: [9fans] Small program PlanKey (paraphrase of DOSKey)

2009-01-29 Thread Roman V. Shaposhnik
On Thu, 2009-01-29 at 08:53 -0500, erik quanstrom wrote:
   How about turning acme to universal UI, in the style of old Oberon?
  
  Acme very deeply believes that everything's just text. It would be
  substantial effort to get it to be any more universal than that. I'm
  aware of at least two independent efforts by very smart people who
  stalled at about the same place.
 
 i was hoping to avoid this discussion and keep things simple.
 
 the problem with adding graphics to acme is kind of interesting
 though.  text pretty much does it's own layout. 

You've hit the nail on the head with this comment. It seems that almost
all layout systems spend 99% of their smarts laying out blocks of 
graphic information *and* trying to figure out how to make text be
still self-layingout. And I do mean all: from TeX, lout, all the
way to HTML/CSS.

If we were to learn from their experience I'd say it is a heck of
a job to get it all right and still maintain your sanity.

Thanks,
Roman.




Re: [9fans] Sources Gone?

2009-01-29 Thread Roman V. Shaposhnik
On Thu, 2009-01-29 at 08:37 -0500, erik quanstrom wrote:
  and as you well point out, the skils of a schizophrenic monkey for
  managing local changes.
 
 well then, please show me how hg/git or whatever would save
 me from the situation outlined.  how would hg/git know that
 i was really using some code which i had never locally modified
 and was then removed on sources?

it wouldn't. but the fact that it encourages a three step process:
   1. get the immutable history (whatever it is) but don't modify your 
   write buffer
   2. inspect history. Git offers quite a few nice tools to manage your
   local changes in the interim, but it is conceptually similar to
   formatting an extra fossil buffer with a score corresponding to
   the tip of the history and simply comparing it to what you have.
   3. only when you are absolutely certain, you combine your local 
   changes with whatever history brought you, then you commit and
   get the new score
makes it far less dangerous. With replica (on those two or three 
occasions that I used it) it seemed that your only option is
to hope for the best. It doesn't manage history. It manages
your write buffer.

Thanks,
Roman.




Re: [9fans] Sources Gone?

2009-01-29 Thread Roman V. Shaposhnik
On Thu, 2009-01-29 at 09:18 -0800, Russ Cox wrote:
 Onr fundamental difference is that the latter set is
 intended to keep trees exactly in sync, 

trees tend to be highly overloaded, but if you refer
to the filesystem hierarchy as seem by open, then the
above statement, if applied to Git, is misleading. 

Git specifically opted out for some additional complexity
in favor of treating the non-mutable hash addressed history
and write buffer differently.

Not realizing that git makes this distinction, makes people
surprised when they try to push their own history into
the repositories of others only to find out that the
tree they see locally doesn't match the tree that is on
the other end.

This rigid distinction was one of the factors that swayed
us in favor of Git when we did internal evaluation of 
DSCMs about a yer ago. It really makes things much more
manageable.

 The replica tools are not SHA1-based because they
 cannot depend on the user having a venti to manage
 the blocks, and managing a separate copy of the data
 (like the dvcs's do) seemed out of character with
 fitting well into the surrounding system.

That is well understood and replica definitely has its
place in Plan9.

That said, what would be your thoughts on developing the
tools (and interfaces perhaps) for fetching up venti 
blocks between two systems in a secure and manageable way.

It seems that as a *complimentary* solution this would
achieve quite a few benefits of Git/etc.

Thanks,
Roman.




Re: [9fans] Sources Gone?

2009-01-29 Thread Roman V. Shaposhnik
On Thu, 2009-01-29 at 14:33 -0800, Russ Cox wrote:
 On Thu, Jan 29, 2009 at 1:09 PM, Roman V. Shaposhnik r...@sun.com wrote:
 I don't know how well Git handles this; I apologize for that.

Git doesn't get annoyed. In fact, with things like git stash you can
even test incremental changes to the merge without loosing the state
of your actual filesystem tree.

 I think using venti as a backend for Git would buy you
 very little.  Git already does a good job of managing its
 blocks.

Perhaps, I haven't made myself clear. What I asked you about
had nothing to do with Git. I was suggesting that letting two
venti systems efficiently trade blocks would be a desirable
addition to the system. 

There was a question on this list not long time ago whether
getting access to venti blocks of the sources would be possible.
The answer at the time was no. This is understandable since
the stock venti doesn't really offer any kind of security 
mechanism for doing that.

However, the very fact that somebody else asked that question suggests
that the feature is not useless one.

Thanks,
Roman.




Re: [9fans] Sources Gone?

2009-01-29 Thread Roman V. Shaposhnik
On Thu, 2009-01-29 at 16:42 -0500, erik quanstrom wrote:
  That said, what would be your thoughts on developing the
  tools (and interfaces perhaps) for fetching up venti 
  blocks between two systems in a secure and manageable way.
 
 i think this harks back to ye olde dump.  the main difference
 is that inode number has now become a score and gotten
 much fatter.
 
 the problem at this level is it's hard to maintain any differences.
 (you can't skip one of a sequence of 6 incremental dumps.)

To use git as an example here, it has a concept of a shallow clone,
where it lets you skip the history older than a particular date.

 or apply changes from one venti to another. 

What do you mean by apply changes? Each venti has a set of 
blocks corresponding to vac hierarchies. Each vac hierarchy
has a single parent. Retrieving the missing blocks reachable
from a hierarchy of interest to you is all that is needed.

 i don't see how to make sense of venti-level syncing unless it is so 
 basic that you dump all the blocks from one venti into another.  
 in which case, no special tools are needed.

Some level of smartness in how block traversal is made needs to
be there. I would also like to have an agent close to the actual
server hosting venti archive being able to do things on my behalf
and only sending the results back (e.g. traversing the hierarchies
only to determine that certain things are not needed is painful
over the network). Plus there has to be a security mechanism that
would not allow me to request random blocks, unless I'm authorized.

Thanks,
Roman.




Re: [9fans] Small program PlanKey (paraphrase of DOSKey)

2009-01-27 Thread Roman V. Shaposhnik
On Mon, 2009-01-26 at 22:35 -0800, Akshat Kumar wrote:
 2009/1/26 Roman Shaposhnik r...@sun.com:
 ...
  Yeah, that's about the only thing that is useful to me
  as well. The rest requires too much mousing around
  and in general it is quicker for me to compose the
  command line anew rather than trying to edit the
  bygones.
 
 
 There are normally two cases in a rio rc window
 with excessive output and commands floating
 about:
 (1) you want to retrieve a prior command and know
 quite exactly what it is, or unique keywords to
 identify it, but simply don't have the patience,
 will-power, eyes, hands, whatever, to type it again
 or go looking for it;

I often wished rio windows had Find Prev Find Next
functionality so that at least I can navigate all that
text that it holds simply with my mouse.

Thanks,
Roman.




Re: [9fans] Small program PlanKey (paraphrase of DOSKey)

2009-01-27 Thread Roman V. Shaposhnik
On Tue, 2009-01-27 at 14:25 -0800, Christopher Nielsen wrote:
  ... I've seen this study and I tend to believe it. But there's a gotcha:
  the kind of work that I and other software engineers do with computers
  is almost orthogonal to what the study was focusing on. I don't believe
  anybody else, but engineers, spend the majority of time dealing with
  text.
 
 Who do you think Plan 9 was designed for and by?

For researches by researches. You have a different explanation?

 Maybe you should try using the system without all your preconceived
 notions of what should and should not be.

I'm using 9vx on a daily basis (and there used to be a certain level
of 9term, but it had declined now). I've been using Plan9 in one
form or the other since 2000. Do my notions still seem preconceived
to you, or can we, please, move on?

Thanks,
Roman.




Re: [9fans] Small program PlanKey (paraphrase of DOSKey)

2009-01-27 Thread Roman V. Shaposhnik
On Tue, 2009-01-27 at 14:43 -0800, Christopher Nielsen wrote:
 On Tue, Jan 27, 2009 at 14:31, Roman V. Shaposhnik r...@sun.com wrote:
  On Tue, 2009-01-27 at 14:25 -0800, Christopher Nielsen wrote:
   ... I've seen this study and I tend to believe it. But there's a gotcha:
   the kind of work that I and other software engineers do with computers
   is almost orthogonal to what the study was focusing on. I don't believe
   anybody else, but engineers, spend the majority of time dealing with
   text.
 
  Who do you think Plan 9 was designed for and by?
 
  For researches by researches. You have a different explanation?
 
 By programmers for programmers.

Are you a programmer? Care to give pointers to the projects you've 
been on?

 No need to reply. This is my last post on the subject.

I get it! You are not a programmer -- you are a phone prankster.

Thanks,
Roman.




Re: [9fans] Small program PlanKey (paraphrase of DOSKey)

2009-01-27 Thread Roman V. Shaposhnik
On Tue, 2009-01-27 at 15:11 -0800, Christopher Nielsen wrote:
 On Tue, Jan 27, 2009 at 14:50, Roman V. Shaposhnik r...@sun.com wrote:
 
  Are you a programmer? Care to give pointers to the projects you've
  been on?
 
 I am not going to get into a pissing contest with you. Check the archives.

But you did! You told me to check the archives ;-) And you lied too.
How adorable. 

Now, if you have something constructive to say, please say it.
If the only reason you came here is to get the kids off your 
lawn -- just beat it old man. Eris has more sense in what she
posts here.

Thanks,
Roman.

P.S. I apologize for the rest of list, but I just can't
stand the ivory tower attitude. Even if I am unworthy
of Plan9 wisdom, I would like that to be articulated,
not spitted out.

P.P.S. As for me -- this is my last email in this thread.




Re: [9fans] Changelogs Patches?

2009-01-26 Thread Roman V. Shaposhnik
On Mon, 2009-01-26 at 08:53 -0500, erik quanstrom wrote:
  It depends on the vdev configuration. You can do simple mirroring
  or you can do RAID-Z (which is more or less RAID-5 done properly).
 
 raid5 done properly?  could you back up this claim?

Yes. See here for details:
   http://blogs.sun.com/bonwick/entry/raid_z

   does this depend on the amount of i/o one does on the data or does 
   zfs scrub at a minimum rate anyway.  if it does, that would be expensive. 

  
  You can do resilvering (fixing the data that is known to be
  bad) or scrubbing (verifying and fixing *all* the data). You
  also can configure things so that bad blocks either trigger
  or don't automatic resilvering. Does this answer your question?
 
 no.  not at all. 

Then, please, restate it.

 if you're serious about using ec2, one of the
 costs you need to control is your b/w usage.  you're going to
 notice overly-aggressive scrubbing in your mothly bill.

Only if you asked for that to happen. Its all under your control.
You may decide to never ever do scrubbing.

  The scariest takeaway from the conference was: with the economy
  the way it is physical on-site datacenters are becoming a 
  luxury for all but the most wealthy companies. Thus whether
  we like it or not virtual data centers are here to stay.
 
 if the numbers i came up with for coraid are correct, it would would cost
 coraid about 50x more to use ec2.  that is, if we can run plan 9
 at all.

You may think what you want, but obviously quite a few existing small to
mid-size companies disagree. Including a couple of labs with MPI apps
now running on EC2. May be your numbers are wrong, may be your usage
patterns are different. Who knows.

Thanks,
Roman.




Re: [9fans] Changelogs Patches?

2009-01-26 Thread Roman V. Shaposhnik
On Mon, 2009-01-26 at 08:22 -0800, Russ Cox wrote:
  As for me, here's my wish list so far. It is all about fossil, since
  it looks like venti is quite fine (at least for my purposes) the
  way it is:
  1. Block consistency. Yes I know the argument here is that you
  can always roll-back to the last known archival snapshot on venti.
  But the point is to kown *when* to roll back. And unless fossil
  warns you that a block has been corrupted you wouldn't know.
 
 I don't understand what you mean.  Do you want fossil to tell
 you when your disk is silently corrupting data, or something else?

Implementation vise I would be happy to see the same score checks that
venti does implemented in fossil. Complaining like this:
   seterr(EStrange, lookuplump returned bad score %V not %V, u-score, score);
Would be good enough.
   
  2. live mounting of arbitrary scores corresponding to vac
  VtRoot's to arbitrary sub-directories in my fossil tree. After
  all, if I can do create of regular files and sub-directories
  via fossil's console why can't I create pointers to the existing
  venti file-hierarchies?
 
 The only reason this is hard is the choice of qids.
 You need to decide whether to reuse the qids in the archive
 or renumber them to avoid conflicts with existing qids.
 The vac format already has a way to offset the qids of whole
 subtrees, but then if you make the tree editable and new files are
 created, it gets complicated.

I see. Thanks for the explanation.

  3. Not sure whether this is a fossil requirement or not, but I
  feel uneasy that a root score is sort of unrecoverable from the
  pure venti archive. Its either that I know it or I don't.
 
 I don't understand what you mean here either.
 From a venti archive, you do cat file.vac to find
 the actual score.

As I mentioned: this one is not really a hard requirement, but
rather me thinking out loud. To me it feels that Venti is
opaque. In a sense that if I don't know the score to give to flfmt -v
then there's no way to browse through the venti to see what
could be there (unless I get physical access to arenas, I guess).

Now, suppose I have a fossil buffer that I constantly snap to venti.
That will build quite a lengthy chain of VtRoots. Then my fossil
buffer gets totally corrupted. I no longer know what was the 
score of the most recent snapshot. And I don't think I know of any
way to find that out.

 The amazing thing to me about fossil is how indestructable
 it is when used with venti.  

I agree. That has been very much the case during my short
evaluation of the two.

  It is actually quite remarkable how similar the models of
  fossil/venti and Git seem to be: both build on the notion
  of the immutable history. Both address the history by the
  hash index. Both have a mutable area whose only purpose
  is to stage data for the subsequent commit to the permanent
  history. Etc.
 
 I don't think it's too remarkable.  Content hash addressing was
 in the air for the last decade or so and there were a lot of
 systems built using it.  The one thing it does really well
 is eliminate any worry about cache coherency and versioning.
 That makes it very attractive for any system with large
 amounts of data or multiple machines.  Once you've gone down
 that route, you have to come to grips with how to implement
 mutability in a fundamentally immutable system, and the
 obvious way is with a mutable write buffer staging writes
 out to the immutable storage.

All true. Yet, it is surprising how many DSCMs that were built
on the idea of hash addressable history got the implementation
of mutability part wrong. Git is the closest one to, what I
now understand, is the fossil/venti approach.

Thanks,
Roman.




Re: [9fans] Changelogs Patches?

2009-01-25 Thread Roman V. Shaposhnik
On Tue, 2009-01-20 at 16:52 -0700, andrey mirtchovski wrote:
 for my personal $0.02 i will say that this argument seems to revolve
 around trying to bend fossil and venti to match the functionality of
 zfs and the design decisions of the team that wrote it. 

That is NOT the conversation I'm interested in. My main objective is 
to evaluate venti/fossil approach to storage and what kind of benefits
it might provide. It is inevitable that I will contrast venti/fossil
with ZFS, simply because it is the background I'm coming from.

 i, frankly, think that it should be the other way around; zfs should 
 provide the equivalent of the fossil/venti snapshot/dump functionality 
 to its users. that, to me would be a benefit.

Ok. It is fair to turn the tables. So now, let me ask you: what are
the benefits of fossil/venti that you want to see in ZFS? So far
the only real issue that you've identified is this:

  ||| where the second choice becomes a nuisance for me is in the 
  ||| case where one has thousands of clones and needs to keep track 
  ||| of thousands of names in order to ensure that when the right one
  ||| has finished the right clone disappears.

And I think it is a valid one. But is there anything else (execpt
the issues that have to do with the fact tha ZFS lives in UNIX
where fossil/venti in Plan9)? 

As for me, here's my wish list so far. It is all about fossil, since
it looks like venti is quite fine (at least for my purposes) the
way it is:
 1. Block consistency. Yes I know the argument here is that you
 can always roll-back to the last known archival snapshot on venti.
 But the point is to kown *when* to roll back. And unless fossil
 warns you that a block has been corrupted you wouldn't know.
  
 2. live mounting of arbitrary scores corresponding to vac
 VtRoot's to arbitrary sub-directories in my fossil tree. After 
 all, if I can do create of regular files and sub-directories 
 via fossil's console why can't I create pointers to the existing 
 venti file-hierarchies?
  
 3. Not sure whether this is a fossil requirement or not, but I
 feel uneasy that a root score is sort of unrecoverable from the
 pure venti archive. Its either that I know it or I don't. 

 all this filesystem/snapshot/clone games are just a bunch of toys to 
 make the admins happy and have little effective use for the end user.

I disagree. Remember that this whole conversation started from
a simple premise that a good archival system could be an
efficient replacement for the SCM. If your end users are
software developers -- that IS very relevant to them.

It is actually quite remarkable how similar the models of
fossil/venti and Git seem to be: both build on the notion
of the immutable history. Both address the history by the
hash index. Both have a mutable area whose only purpose
is to stage data for the subsequent commit to the permanent
history. Etc.

  I see what you mean, but in case of venti -- nothing disappears, really.
  From that perspective you can sort of make those zfs clones linger.
  The storage consumption won't be any different, right?
 
 the storage consumption should be the same, i presume. my problem is
 that in the case of zfs having several hundred snapshots significantly
 degrades the performance of the management tools to the extend that
 zfs list takes 30 seconds with about a thousand entries.

Really?!?

 compared to
 fossil handling 5 years worth of daily dumps in less than a second.
 but that's not really a serious argument ;)

And what's the output of
   term% ls -d path-to-your-fossil/archive/*/*/* | wc -l

  Great! I tired to do as much homework as possible (hence the delay) but
  I still have some questions left:
 0. A dumb one: what's the proper way of cleanly shutting down fossil
 and venti?
 
 see fshalt.

Hm. There doesn't seem to be much of shutdown code for fossil/venti
in there. Does it mean that sync'ing venti and then just slay(1)'ing
it is ok?

Thanks,
Roman.




Re: [9fans] Changelogs Patches?

2009-01-25 Thread Roman V. Shaposhnik
On Fri, 2009-01-23 at 22:36 -0500, erik quanstrom wrote:
  You never know when end-to-end data consistency will start to really
  matter. Just the other day I attended the cloud conference where 
  some Amazon EC2 customers were swapping stories of Amazon's networking
  stack malfunctioning and silently corrupting data that was written
  onto EBS. All of sudden, something like ZFS started to sound like 
  a really good idea to them.
 
 i know we need to bow down before zfs's greatness, but i still have
 some questions. ☺

Oh, come on! I said something like ZFS ;-) These guys are on
Linux, for crying out loud! They need to be saved one way
or the other (and Solaris at least have *some* AMIs available
on EC2).

 does ec2 corrupt all one's data en mass?  

From what I understood -- it was NOT en mass. But the scary
thing is that they only noticed because of the dumb luck
(the app coredumped because the input it was getting was not
properly formatted or something) 

 how do you do meaningful redundency in a cloud where one controls 
 none of the failure-prone pieces.

Well, that's the very point I'm trying to make: you have
to be at least notified that your data got corrupted.

Once you do get notified -- you can recover in variety
of different ways: starting from simply re-uploading/re-generating
your data all the way to the RAID-like things.

 finally, if p is the probability of a lost block, when does p become too
 large for zfs' redundency to overcome failures? 

It depends on the vdev configuration. You can do simple mirroring
or you can do RAID-Z (which is more or less RAID-5 done properly).

 does this depend on the amount of i/o one does on the data or does 
 zfs scrub at a minimum rate anyway.  if it does, that would be expensive.  

You can do resilvering (fixing the data that is known to be
bad) or scrubbing (verifying and fixing *all* the data). You
also can configure things so that bad blocks either trigger
or don't automatic resilvering. Does this answer your question?

 maybe ec2 is heads amazon wins, tails you loose?

The scariest takeaway from the conference was: with the economy
the way it is physical on-site datacenters are becoming a 
luxury for all but the most wealthy companies. Thus whether
we like it or not virtual data centers are here to stay.

Thanks,
Roman.




Re: [9fans] Changelogs Patches?

2009-01-25 Thread Roman V. Shaposhnik
On Tue, 2009-01-20 at 21:02 -0500, erik quanstrom wrote:
  In such a setup a corrupted block from a fossil 
  partition will go undetected and could end up
  being stored in venti. At that point it will become
  venti problem.
 
 it's important to keep in mind that fossil is just a write buffer.
 it is not intended for the perminant storage of data. 

Sure. But it must store the data *intact* long enough
for me to be able to do a snap. It has to be able to
at least warn me about data corruption.

 while corrupt data could end up in venti, the exposure lies only
 between snapshots.  you can rollback to the previous good
 score and continue.

That is my *entire* point. If fossil doesn't tell you that 
the data in its buffer was/is corrupted -- you have no
reason to rollback. 

Thanks,
Roman.




Re: [9fans] Changelogs Patches?

2009-01-23 Thread Roman V. Shaposhnik
On Wed, 2009-01-21 at 20:02 +0100, Uriel wrote:
 On Wed, Jan 21, 2009 at 2:43 AM, Roman V. Shaposhnik r...@sun.com wrote:
  Sure, but I can't really use venti  without using
  fossil (again: we are talking about a typical setup
  here not something like vac/vacfs), can I?
 
  If I can NOT than fossil becomes a weak link that
  can let corrupted data go undetected all the way
  to a venti store.
 
 Fossil has always been a weak link, and probably will always be until
 somebody replaces it. There was some idea of replacing it with a
 version of ken's fs that uses a venti backend...
 
 Venti's rock solid design is the only thing that makes fossil
 minimally tolerable despite its usual tendency of stepping on its hair
 and falling on his face.

After spending sometime reading the sources and grokking fossil
I don't think it is a walking disaster. Far from it. 

There are a couple of places where things can be improved, 
to make *me* happier (YMMV), and I'll try to focus on these 
in replying to Andrei's email. Just to get some closure on
this discussion.

Thanks,
Roman.




Re: [9fans] Changelogs Patches?

2009-01-20 Thread Roman V. Shaposhnik
On Tue, 2009-01-20 at 09:19 -0500, erik quanstrom wrote:
   in the case of zfs, my claim is that since zfs can reuse blocks, two
   vdev backups, each with corruption or missing data in different places
   are pretty well useless.
  
  
  Got it. However, I'm still not fully convinced there's a definite edge
  one way or the other. Don't get me wrong: I'm not trying to defend
  ZFS (I don't think it needs defending, anyway) but rather I'm trying
  to test my mental model of how both work.
 
 if you end up rewriting a free block in zfs, there sure is.  you
 can't decide which one is correct.

You don't have to decide. You get use generation # for that.

  P.S. Oh, and in case of ZFS a damaged vdev will be detected (and
  possibly re-silvered) under normal working conditions, while
  fossil might not even notice a corruption.
 
 not true.  one of many score checks:
 
 srv/lump.c:103:   seterr(EStrange, lookuplump 
 returned bad score %V not %V, u-score, score);

I don't buy this argument for a simple reason: here's a very
easy example that proves my point:

term% fossil/fossil -f /tmp/fossil.bin
fsys: dialing venti at net!$venti!venti
warning: connecting to venti: Connection refused
term% mount /srv/fossil /n/f
term% cd /n/f/test
term% echo 'this  is innocent text'  text.txt
term% cat text.txt
this  is innocent text
term% dd -if /dev/cons -of /tmp/fossil.bin -bs 1 -count 8 -oseek 278528 -trunc 0
this WAS
8+0 records in
8+0 records out

term% rm /srv/fossil /srv/fscons
term% fossil/fossil -f /tmp/fossil.bin
fsys: dialing venti at net!$venti!venti
warning: connecting to venti: Connection refused
create /active/adm: file already exists
create /active/adm adm sys d775: create /active/adm: file already exists
create /active/adm/users: file already exists
create /active/adm/users adm sys 664: create /active/adm/users: file already 
exists
nuser 5 len 84
term% mount /srv/fossil /n/f2
term% cat /n/f2/test/text.txt
this WAS innocent text
term% 

Of course, with ZFS, the above corruption would be always
noticed and sometimes (depending on your vdev setup)
even silently fixed.

Thanks,
Roman.




  1   2   >