4 ms·
The meta-problem here is automatically determining how to allocate tasks among different types of processors in a large, heterogeneous data center. There are wo
by pjscott 15y ago
The meta-problem here is automatically determining how to allocate tasks among different types of processors in a large, heterogeneous data center. There are workloads for which wimpy cores have a serious advantage, and ones where they don't fare as well. Also, assigning jobs to cores that aren't perfectly suited for them may still be a good idea if you need to meet load spikes. The profiling and scheduling could be tricky, but for a company the size of Google, it could save a lot of power and money.
- miratrix 15y agoI think you may have missed one of the central point that Urs was trying to make: "Software development costs often dominate a company’s overall technical expenses, so forcing programmers to parallelize more code can cost more than we’d save on the hardware side." There could be savings to be had by having a very smart scheduler that knows all about what kind of workload a given piece of task is by analyzing the code and dispatching it correctly. As you mentioned, though, that's not an easy problem to solve, and will also be a part of the software development cost. From the programmer's point of view, that'll be yet another variable out of their control that may break the computing abstraction that makes these massive parallel machines possible.
- pjscott 15y agoThat's part of the big win of having job abstraction systems, like MapReduce: having the jobs wrapped in higher-level abstractions that make automated profiling and fancy scheduling feasible. It doesn't even have to be anything that fancy. It could be along the lines of "run the job a hundred times on each type of machine, and measure throughput, latency, and energy usage; then try to allocate jobs to the best kind of processor for it." That shouldn't break anything.
- gruseom 15y agoHow do you tell what kind of job you have without running it a hundred times? Or do you mean run small portions of a large job before deciding where to commit the rest?
- pjscott 15y agoI meant each type of job; sorry for the ambiguity. So, for example, if you have a job type that is "look over a chunk of text and return term frequencies", you could test this on a few hundred chunks of text, and then use this profiling information to guide the scheduling any other time you run a job of this type.
- cma 15y agoGoogle has this covered in spades: http://research.google.com/pubs/pub36575.html http://research.google.com/pubs/pub36575.html