You're absolutely correct, of course, in what you state: Google doesn't access millions of files in a split second. But Google finds one file in millions in a split second.

I still think, though, that indexing makes sense on a PC - with practically any underlying file system. More than ten years ago I used a large (for that time) database of about 200 million files - which was CDROM based; the file system was PC Dos and the indexing was done on top of that in a sort of front end. To find/access any one of the 200 mio files on the slow CDROM took never longer than 0.8 seconds. So, we didn't touch the "kernel" of dos at all and still got fast results. I think a similar approach should work on a Linux system. In my opinion this could and should be done outside of the kernel. What do you think?

Paul


Robert G. Brown wrote:

On Sun, 22 Jan 2006, PS wrote:

Indexing is the key; observe how Google accesses millions of files in split seconds; this could easily be achieved in a PC file system.


I think that you mean the right thing, but you're saying it in a very
confusing way.

1) Google doesn't access millions of files in a split second, it AFAIK
accesses relatively few files that are hashes (on its "index server")
that lead to URLs in a split second WITHOUT actually traversing millions
of alternatives (as you say, indexing is the key:-).  File access
latency on a physical disk makes the former all but impossible without
highly specialized kernel hacks/hooks, ramdisks, caches, disk arrays,
and so on.  Even bandwidth would be a limitation if one assumes block
I/O with a minimum block size of 4K -- 4K x 1M -> 4 Gigabytes/second
(note BYTES, not bits) exceeds the bandwidth of pretty much any physical
medium except maybe memory.

2) It cannot "easily" be achieved in a PC file system, if by that you
mean building an actual filesystem (at the kernel level) that supports
this sort of access.  There is a lot more to a scalable, robust,
journalizeable filesystem than directory lookup capabilities.  A lot of
Google's speed comes from being able to use substantial parallelism on a
distributed server environment with lots of data replication and
redundancy, a thing that is impossible for a PC filesystem with a number
of latency and bandwidth bottlenecks at different points in the dataflow
pathways towards what is typically a single physical disk on a single
e.g.  PCI-whatever channel.

I think that what you mean (correctly) is that this is something that
"most" user/programmers would be better off trying to do in userspace on
top of any general purpose, known reliable/robust/efficient PC
filesystem, using hashes customized to the application.  When I first
read your reply, though, I read it very differently as saying that it
would be easy to build a linux filesystem that actually permits millions
of files per second to be accessed and that this is what Google does
operationally.

   rgb



Paul


Joe Landman wrote:

Methinks I lost lots of folks with my points ...

Major thesis is that on well designed hardware/software/filesystems, 50000 files is not a problem for accesses (though from a management point of view it is a nightmare). For poorly designed/implemented file systems it is a nightmare.

Way back when in the glory days of SGI, I seem to remember xfs being tested with millions of files per directory (though don't hold me to that old memory). Call this hearsay at this moment.

A well designed and implemented file system shouldn't bog you down as you scale out in size, even if you shouldn't. Its sort of like your car. If you go beyond 70 MPH somewhere in the US that supports such speeds, your transmission shouldn't just drop out because you hit 71 MPH.

Graceful degradation is a good thing.

Joe





_______________________________________________
Beowulf mailing list, [email protected]
To change your subscription (digest mode or unsubscribe) visit 
http://www.beowulf.org/mailman/listinfo/beowulf

Reply via email to