Re: more questions

From: Andrea Arcangeli <andrea_X_at_X_cpushare.com>
Date: Sat, 10 Nov 2007 17:18:29 +0100
To: Alex Fihman <alex_fihman_X_at_X_mail.ru>
Cc: cpushare-discuss_X_at_X_cpushare.com
[ cc'ed to cpushare-discuss with Alex permission ]

On Sat, Oct 20, 2007 at 04:17:13PM +0300, Alex Fihman wrote:
>  Hi, Andi,
> 
> There are my notes about CPUShare.
> I think of it as a future successful
> commercial project, so here are my notes.
> 
> 1. How CPUShare is compared with another
> already existing companies.
> 
> Availability:
> Amazon EC2 and Parabon have thousands
> readily available computers. CPUShare has
> only about 30 boxes online, buyer may
> consider renting out PCs to be more stable,
> faster, secure, etc.etc.

I don't know Parabon much, and I couldn't understand exactly how the
sellers are compensated by just reading the website. I also seem to
understand it can't run machine bytecode so comparing the cost of 1
hour at full cpu speed with 1 hour with a JIT virtual machine is like
comparing apples to oranges. Not having a JIT also saves memory for
all sellers.

What I am sure about is that the number of boxes currently online in
CPUShare is absolutely irrelevant, the number of accounts if something
is more relevant. Demand for cpushare will always be the limit, supply
is going to be "unlimited" from any practical matter. Suppose that a 1
million buy order showup on the bid, the ask will grow exponentially
with blogs talking about CPUShare growing and working for real,
providing enough supply until the demand is fully satisfied. If the
bid will be solid and too big for low income countries to satisfy it,
likely big companies will start recycling their idle cycles and
sending invoices to CPUShare for the money they withdraw. The only
trouble is to find this 1 million buy order. The reason there are only
a few dozen nodes connected is only a direct consequence of no money
on the bid most of the time. And rightfully so.

> Storage:
> Amazon has additional storage service.
> Parabon has high-level protocol available,
> that allows transfer of file chunks.
> 
> Amazon allows installing any Linux software,
> that means any existing high-level protocol
> can be used.

CPUShare doesn't allow any local storage at this point in time. Local
storage can be simulated in ram though.

In the long term I plan to use virtualization to allow regular apps to
run on top of CPUShare, but lots more network traffic will have to
happen then to transfer the filesystem. I never want to wire the
CPUShare protocol to any bytecode, filesystem layout or anything like
that. The buyer has to be totally in control of what runs on the
seller computer so he can run anything he wants. All restrictions
should be applied through jailing methods like seccomp or with
specially tweaked virtual machines and nothing else.

> 2. Language limitations. Currently cpushare
> allows very limited version of C compiler.
> Parabon allows programming in Java (high-level,
> but limited with 1 language), Amazon EC2 is
> basically limited by Linux platform, but any
> software will do.

Besides potentially allowing virtualization and filesystem delivery in
the future, more bytecodes could be added to cpushare in a
seccomp-like behavior, so for example you could use python bytecode
instead of machine bytecode and run it inside a jail in the client
but then it'll need to define a specific python version to run it. The
python binary running it may be different for every seller in this
model. While if you do it yourself with the virtual machine model you
will have to send the python binary to the seller through the root
filesystem delivery to boot the KVM.

> 3.Platform. Boinc allows making windows
> client with windows software. Windows with all
> it's problems, is a most popular
> desktop environment, that will allow many to
> join. Consider using some sandbox for windows?

You can find the ISO link in the sell order. That's directly bootable
with virtualpc/vmware/whatever. What's missing is a .exe that makes
sure virtualpc or vmware are restarted at boot time.

colinux will also work (if stabilized but that's not a cpushare
issue).

> Now about the cpushare itself.
> 
> 1. When software crashes for some reason, the
> buy client reconnects, and payment is made.
> Say if my software crashes why should I pay
> again, if 1 hour didn't pass?

Well you're the buyer so you will have to pay if you disconnect. You
won't pay only if the seller disconnect before the 1 hour is
finished. You will have to pay even if the seller behaves badly but
you will be able to mark the seller as erratic and the screening
parameters of the buy order will eventually reject the bad sellers out
of your screen. The voting will be automated by the buy and sell
clients of course.

> 2. How can I write optimized code for SSE2, SSE3,
> 3d now, 64_86?

That's easy by running cpuid. Here seccomp payoffs big compared to a
Java JIT... see when I said not to compare apple to oranges in terms
of bare-hardware CPU performance.

> 3. current model can easily cause the network
> congestion. Network bandwidth is not counted and
> not billed.

Correct, billing may be allowed. But this should be a concern for the
seller not for you as buyer. The buyer should size the order so its
internet bandwidth is maxed out. As soon as the protocol is pure p2p,
there will be no other bottleneck other than the buyer bandwidth. You
will be able to size the order dynamically with the website. If you
reduce the size, when some computation finishes it will not be
restarted in another node and the total number of simultaneous
transactions will reach the new order size after 1 hour. If you
instead increase the order size, you will immediately start
computing. So the idea is to start small and grow the size of the buy
order until your preferred network traffic analyzer shows either the
upload or download bits per second reaching your adsl/hdsl line max
upload or download bandwidth.

You will have to keep 1 port open in your firewall using destination
nat if your buyer computer is different, to be sure to reach all sellers.

> 4. Global benchmark interfere with job running,
> and reports incorrect results. Also sell machine reported
> online and reconnected to the job only after benchmark.

Hmm no, the global benchmark is completely transparent to all
transactions and all transactions are totally asynchronous with
respect of the global benchmark.

You can imagine the global benchmark as a freeze event. It's like if
it never run, but for a couple of minutes every X couple of minutes,
the whole CPUShare freezes time and all real transactions are
temporarily halted. But they restart totally transparently. This is
implemented simply through a sigstop/sigcont (well the server
implementation is not simple at all though ;-).

> 5. When hour of additional payment comes, buy client
> is disconnected, why?

Mostly an implementation detail. The seller may have to change if
somebody is selling something that matches your buy order, but for a
lower price. In theory I could keep the transaction open if I
atomically find that the best seller is still the same that was about
to be disconnected. I doubt I'll change this in the short term, there
are more urgent matters than try to recycle the last partial bit of
the hour. Furthermore when the sigquit signal is sent, the sell
bytecode should complete and quit somehow, so no real electric energy
is wasted even in the current implementation that always terminates
the transaction when the time is over.

> 6. Unused currencies very annoying. Why don't you
> wipe them from website?

Hmm ok, good point ;-). An #if 0 should do the trick.

> 7. Lack of WiFi and proxy support.

proxy will likely not be supported. Think an employee running cpushare
on its desktop computer and making money with the electric energy of
the company without the company knowing it. Now this can end in many
ways for this employee, and certainly it can't be my fault. But I feel
safer in giving a secure way to the corporate firewall administrators
to block CPUShare. If the company overreacts to such an event in a big
way, I want to be sure that before they could ever think at blaming me
for implementing CPUShare, they would certainly think at blaming the
firewall administrator for allowing this encrypted traffic to the
cpushare servers on a well defined and unusual port to pass through
the corporate firewall. If the company has such restrictive rules,
they should also have a restrictive firewall that blocks CPUShare by
default like bittorrent or any other non standard protocol. I'm being
paranoid here I know, but given how small CPUShare is right now, I
have to. Every legal risk I can avoid, I avoid it, be sure.

> 8. CPUShare server often crashes. After that need to
> wait benchmark to reconnect.

I know, sad but unfixable...

> 9. It would be good to implement some existing
> protocol for grid computing.

This will hopefully happen on top of the api.py yes. Lots of work to
do. All 100% LGPL open source work. It doesn't need to be me. I only
provide the link-level wire transport, everything on top of it is
totally open.

> 10. Book web page - would be nice to see more information
> about machines available.

Indeed... the website is still very basic right now, the book page
needs all screening options to see the multiple dimensions of the
marketplace.

> 11. It would be good to have some roadmap for future
> development.

Ok I'll add to the wiki, I kept it private so far because nobody ever
asked ;-).

> 12. Payment model. In boinc there's no real money payment
> but some point system. Their model is payment per piece of work.
> Sometimes it may be more fair, allowing the seller to change
> priority of the task, say CPUShare working only when machine
> is idle.

This is be defined as seller performance. If you run CPUShare on a
busy computer your seller performance will drop and the price you can
ask will eventually go down too. Seller performance will be a points
per hour measure, where you keep track of the max points per hour, and
you use that as 100%. Then if a client only did half points per hour
of the fastest ever you tell the server this client has a 50 seller
performance. Over time the ones that are cheating will get an huge
mflops/mips but low seller performance and they will go out of your
screen.
-- 
cpushare-discuss_X_at_X_cpushare.com mailing list - http://www.cpushare.com/
To unsubscribe, send mail to cpushare-discuss-unsubscribe_X_at_X_cpushare.com
Received on 2007-11-10 17:18:32

Click here to return to to homepage.

Search CPUShare Discuss

Disclaimer: the messages posted here are under the sole responsibility of the poster: cpushare.com is publishing mailing list messages in real time while storing safely all the logs containing the relevant IP addresses, timings and mail hops. If you find anything not appropriate in these messages please send a notification through this form. Thank You.

CPUShare Discuss has been converted to html using hypermail 2.2.0.