Slashdot Mirror


Multicore Requires OS Rework, Windows Expert Says

alphadogg writes "With chip makers continuing to increase the number of cores they include on each new generation of their processors, perhaps it's time to rethink the basic architecture of today's operating systems, suggested Dave Probert, a kernel architect within the Windows core operating systems division at Microsoft. The current approach to harnessing the power of multicore processors is complicated and not entirely successful, he argued. The key may not be in throwing more energy into refining techniques such as parallel programming, but rather rethinking the basic abstractions that make up the operating systems model. Today's computers don't get enough performance out of their multicore chips, Probert said. 'Why should you ever, with all this parallel hardware, ever be waiting for your computer?' he asked. Probert made his presentation at the University of Illinois at Urbana-Champaign's Universal Parallel Computing Research Center."

631 comments

  1. This is new?! by DavidRawling · · Score: 4, Insightful

    Oh please, this has been coming for years now. Why has it taken so long for the OS designers to get with the program? We've had multi-CPU servers for literally decades.

    1. Re:This is new?! by bondsbw · · Score: 1

      Just because OS designers milk every cycle from every CPU, doesn't mean web browser designers will.

      --
      All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
    2. Re:This is new?! by Sir_Sri · · Score: 2, Insightful

      ya but those cases, as he reasonably explains, tend to get specialized development (say scientific computing), or separate processes, or while he doesn't explain it, a lot of server stuff is embarrassingly (or close to) parallel.

      I can sort of see them not having a multi-processor OS just waiting for the consumer desktop- server processors are basically cache with some processor attached, whereas desktop processors are architected differently, and who knew for sure what the mutlicore world would look like in detail (or more relevantly what it will look like with 4, 8 or 16 or whatever cores). How will those cores be connected? How symmetric/asymmetric will they be? Right now OS's are built around two big asymmetric processors (cpu and gpu) and several smaller specialized ones (networking sound etc). Some of those architecture things *could* be fairly fundamental to the design you want to use, and there's no point investing huge development time trying to build software for hardware which doesn't exist and may never exist.

      I'm not sure about his proposed architecture. It doesn't sound easily backwards compatible (but I might be wrong there), and there's a certain simplicity to 'reserve one core for the OS, application developers can manage the rest of them themselves' sort of model like consoles.

    3. Re:This is new?! by PhunkySchtuff · · Score: 5, Insightful

      Since when have OS designers optimised their code to milk every cycle from the available CPUs? They haven't, they just wait for hardware to get faster to keep up with the code.

    4. Re:This is new?! by Anonymous Coward · · Score: 0

      The ONLY differences between server and consumer processors are ECC, maybe some platform management modes/instructions, and multi-processor interconnects.

      And quite frankly most of that at this point in time is feature elimination for lower prices markets rather than physically different dies. In fact back in the Pentium 2/3 and Athlon XP/MP era, both companies 'single processor' processors were available for a time with the embedded logic for their higher end SMP counterparts. I have an ASUS dual processor SLOT1 motherboard that used consumer processors in a dual processor configuration. Additionally there were early Athlon XP's that could run as MPs either natively or with a pin mod (I can't remember which, although I remember AMD was quite to stop it not long after it was publicized.

      Point being 'architected differently' isn't true and hasn't been for probably a dozen processor generations or more.

    5. Re:This is new?! by Jeremi · · Score: 4, Insightful

      Why has it taken so long for the OS designers to get with the program?

      Coming up with a new OS paradigm is hard, but doable.

      Coming up with a viable new OS that uses that paradigm is much harder; because even once the new OS is working perfectly, you still have to somehow make it compatible with the zillions of existing applications that people depend on. If you can't do that, your shiny new OS will be viewed as an interesting experiment for the propeller-head set, but it won't ever get the critical mass of users necessary to build up its own application base.

      So far, I think Apple has had the most successful transition strategy: Come up with the great new OS, bundle the old OS with it, inside an emulator/sandbox, and after a few years, quietly deprecate (and then drop) the old OS. Repeat as necessary.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    6. Re:This is new?! by Anonymous Coward · · Score: 0

      Because it's a very hard problem to solve.

    7. Re:This is new?! by Cryacin · · Score: 5, Insightful

      For that matter, since when have software vendors been willing to pay architects/designers/engineers etc to optimise their software to milk every cycle from the available CPUs and provide useful output with the minimum of effort? They don't, they just wait for hardware to get faster to keep up with code.

      The only company that I have personally been exposed to that gives half a hoot about efficient performance is Google. It annoys me beyond belief that other companies think it's acceptable to make the user wait for minutes whilst the system recalculates data derived from a large data set, and doing those calculations multiple times just because a binding gets invoked.

      --
      Science advances one funeral at a time- Max Planck
    8. Re:This is new?! by drsmithy · · Score: 2, Interesting

      It doesn't sound easily backwards compatible (but I might be wrong there), and there's a certain simplicity to 'reserve one core for the OS, application developers can manage the rest of them themselves' sort of model like consoles.

      Those curious about what life would be like with application developers managing system resources, should try firing up an old copy of Windows 3.1 or MacOS and running 10 or so applications at the same time.

      I can only assume TFA is an atrociously bad summary of what he's actually proposing, because it sounds way to boneheaded for someone in that position to be seriously suggesting.

    9. Re:This is new?! by stms · · Score: 0

      Why?! We're talking about the same Microsoft here, right?

    10. Re:This is new?! by Bengie · · Score: 3, Informative

      developing server apps to run parallel is easy, client software is hard. Many times, the cost of syncing threads is greater than the work you get from them. So you leave it single threaded. The question is, how may you design a Framework/API that is very thread friendly while making sure everything runs in the order expected all the while making it easy for bad programmers to take advantage of it.

      The biggest issue with developing async-threaded programs is logical dependencies that don't allow part to be loaded/processed before another. If from square one, you develop an app to take advantage of extra threads, it may be less efficient, but more responsive. Most programmers I talk to have issues trying to understand the interweaving logic of multi-threaded programing.

      I guess it's up to MS to make a easy to use idiot-proof threaded framework for crappy programmers to use.

    11. Re:This is new?! by NatasRevol · · Score: 1, Informative

      Well, Apple has Grand Central Dispatch - which is the OS deals with the cores rather than the programs. Granted, it's only been since Snow Leopard, but it's much better than what Windows has.

      http://en.wikipedia.org/wiki/Grand_Central_Dispatch

      --
      There are two types of people in the world: Those who crave closure
    12. Re:This is new?! by gig · · Score: 2, Informative

      > Since when have OS designers optimised their code to milk every cycle from the available CPUs?

      Apple has been doing this for years. This is one of the advantages for the user of buying a complete product. Apple can't pretend that someone else will solve the problem for them through bigger hardware or the magic of open source.

      Enabling large scale multiprocessing is one of the fundamental features of Mac OS X v10.6 Snow Leopard. The feature is called "Grand Central" and enables an app developer to make fairly small modifications to their app which cause it to go from pegging 1 CPU to pegging an unlimited number of CPU's. But multiprocessing has been part of OS X since the beginning. They shipped machines with multiple CPU's a long, long time ago compared to PC. Even Mac OS 9 had multiprocessing features.

      Apple has also had XGrid going for some time now, which is quick and easy cluster computing.

      Then if you look at iPhone OS, that has been highly, highly optimized. An iPhone 3GS with a 600MHz CPU outperforms a Nexus One with a 1000MHz CPU. The iPhone 3G with a 400MHz CPU outperforms a Palm Pre with 600MHz CPU. Those optimizations are part of the reason why Apple is currently undercutting both Android and Palm on price, which is the opposite of what was expected by Palm and Android developers and the entire industry. iPad on a 1000MHz CPU has been described by the people who have used it so far as being incredibly fast.

      So you are right if you're talking about Microsoft (and maybe Linux, I don't know) but you're definitely wrong if talking about all OS designers.

    13. Re:This is new?! by Anonymous Coward · · Score: 0

      Why don't the chips make themselves to work better with the existing software?

    14. Re:This is new?! by TheRealGrogan · · Score: 1
      It's not always practical to break up a single task into umpteen threads for simultaneous processing. Where you benefit from parallel processing are cases where there are things that can be done out of sequence (e.g. "make -jn+1"), multitasking (or server type workloads) and also when it's more than one process involved in completing a task (the program's threads, helper applications, system calls etc.)

      People just need to understand this. It means you can keep on using your computer while it's doing other work. It doesn't necessarily mean you can encode a single video clip 8 times faster because you have 8 cores.

      Now, since I've got a post form handy... this, from the original article:

      The OS could assign an application a CPU and some memory, and the program itself, using metadata generated by the compiler, would best know how to use these resources.

      Yes, we all know how well we can trust programs to manage their own resources. I fail to see how virtualizing and assigning resources (that would still have to be allocated based on availability and re-allocated if something else needs them) would solve this problem.

    15. Re:This is new?! by jc42 · · Score: 4, Insightful

      Since when have OS designers optimised their code to milk every cycle from the available CPUs?

      This isn't just an OS-level problem. It's a failure among programmers of all sorts.

      I've been involved in software development since the late 1970s, and for the start I've heard the argument "We don't have to worry about code speed or size, because today's machines are so fast and have so much memory. This was just as common back when machines were 1,000 times slower and had 10,000 times less memory than today.

      It's the reason for Henry Petroski's famous remark that "The most amazing achievement of the computer software industry is its continuing cancellation of the steady and staggering gains made by the computer hardware industry."

      Programmers respond to faster cpu speed and more memory by making their software use more cpu cycles and more memory. They always have, and there's no sign that this is going to change. Being efficient is hard, and you don't get rewarded for it, because managers can't measure it. So it's better to add flashy eye candy and more features, which people can see.

      If we want efficient code, we have to figure out ways to reward the programmers that write it. I don't see any sign that people anywhere are interested in doing this. Anyone have suggestions for how it might be done?

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    16. Re:This is new?! by fuzzyfuzzyfungus · · Score: 4, Insightful

      I doubt that it's just google. I suspect the following:

      There are(in broad strokes, and excluding the embedded market), two basic axes on which you have to place a company or a company's software offering in order to predict its attitude with respect to efficiency.

      One is problem scale. If a program is a once-off, or an obscure niche thing, or just isn't expected to have to cope with very large data sets, putting a lot of effort into making it efficient will likely not be a priority. If the program is extremely widely distributed, or is expected to cope with massive datasets, efficiency is much more likely to be considered important(if widely distributed, cost of efficient engineering per unit falls dramatically, if expeced to cope with massive datasets, amount of hardware cost and energy cost avoided becomes significant. Tuning a process that eats 50% of a desktop CPU into one that eats 40% probably isn't worth it. Tuning a process that runs on 50,000 servers into one that runs on 40,000 easily could be).

      The second is location: If a company is running their software on their own hardware, and selling access to whatever service it provides(search engine, webmail, whatever), their software's efficiency or inefficiency imposes a direct cost on them. Their customers are paying so much per mailbox, or so much per search query, they have an incentive to use as little computer power as possible to deliver that product. If a company is selling boxed software, to be run on customer machines, their efficiency incentives are indirect. This doesn't mean "nonexistent"(a game that only runs on $2,000 enthusiast boxes is going to lose money, nobody would release such a thing. Among enthusiasts, browser JS benchmarks are a point of contention); but it generally does mean "secondary to other considerations". Customers, as a rule, are more likely to use slow software with the features they want, or slow software that released first and they became accustomed to, than fast software that is missing features or requires substantial adjustment on their part. Shockingly enough, software developers act on this fact.

      On these axes, you would strongly suspect that Google would be efficiency oriented. Their software runs on a grand scale, and most of it runs on their own servers, with the rest competing against various desktop incumbents, or not actually all that dramatically efficient(Nothing wrong with Google Earth or Sketchup; but nothing especially heroic, either). However, you would expect roughly the same of any entity similarly placed on those axes.

    17. Re:This is new?! by sjames · · Score: 1

      The question is, how may you design a Framework/API that is very thread friendly while making sure everything runs in the order expected all the while making it easy for bad programmers to take advantage of it.

      You don't! You need to get good programmers. Then you design the framework to stay out of their way.

      Give a klutz a hammer and he'll just hurt himself. Giving him an even bigger hammer won't get more nails driven, he'll just hurt himself worse. Give him a nail gun and others will get hurt as well.

    18. Re:This is new?! by PhunkySchtuff · · Score: 3, Interesting

      I don't know if you noticed my sig, but I'm pretty familiar with what Apple have been up to these past few years ;-)

      What I was getting at was that, in general, programmers simply don't have the time or money to really optimise their code and now that computers are, for all intents and purposes, fast enough to not really worry about optimisations.

      Apple are doing a lot of good, as you mention, with things like Grand Central Dispatch, but the multiprocessing features in earlier versions of OS X, and even more OS 9, were nothing that was in any major way any better than that offered by, say, Windows or other Unix based OSs. In fact, in the Mac OS 9 days, the multiprocessing capabilities of Mac OS lagged quite far behind that of Windows NT at the time.

    19. Re:This is new?! by Jane+Q.+Public · · Score: 3, Interesting

      Mod parent up!

      The fact is, the vast majority of programmers (and their tools) are not going to change virtually everything they do in order to deal with multiple cores. And there's good reason for that: it hugely complicates what could otherwise be fairly simple tasks. As the number of cores expand, it gets worse to the point of simply not being practical. This is a job that properly belongs in the OS or hardware layer.

      Is it harder to design a system that decides for itself how to go about threading and multiprocessing, rather than relying on the programmer to know when it is best for that particular program? Yes! But that is irrelevant, because in the long run, that is the way it must be done. There is no other practical choice.

      I had to laugh at Intel a few years ago when they called for end-product programmers to start programming for their multicore processors. I say, "No, Intel. It is you who must cater to the programmers. They are your customers, and essential suppliers of your other customers. It is your job to make sure that your processors do what the programmers want, not the other way around!"

      Apple's decision to put provision for this in their Snow Leopard OS is a clear demonstration of their forward (and practical) thinking. Where are all the others?

    20. Re:This is new?! by stevew · · Score: 5, Informative

      Well - I can tell you that Dave Probert saw his first multi-processor about 28 years ago at Burroughs corporation. It was a dual-processor B1855. I had the pleasure with working with the guy way back then. From what I recall he then went on to work at FPS systems which was an array processor that you could add onto other machines (I think vaxen...but I could be wrong there..)

      Anyway - he has been around ALONG time.

      --
      Have you compiled your kernel today??
    21. Re:This is new?! by Anonymous Coward · · Score: 0

      Thats why Microsoft is involved with Barrelfish http://en.wikipedia.org/wiki/Barrelfish

    22. Re:This is new?! by hitmark · · Score: 1, Troll

      there have been various complains about a "eternal spinning beachball" in the past, no?

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    23. Re:This is new?! by Brian+Gordon · · Score: 4, Insightful

      Maybe it's not a question of whether the code is efficient. Maybe it's a question of how much you're asking the code to do. It's no surprise that hardware struggles to make gains against performance demands when software developers are adding on nonsense like compositing window managers and sidebar widgets. I'm enjoying Moore's law without any cancellation.. just run a sane environment. Qt or GTK, not both, if youre running an X desktop. Nothing other than IM in the system tray. No "upgrade fever" that makes people itch for Windows Media Player 14 when older versions work fine and mplayer and winamp work better.

    24. Re:This is new?! by omfgnosis · · Score: 1

      Software developers don't have infinite resources. Over time, hardware offerings improve dramatically without any investment of resources by developers. Software improvements, in terms of user experience, require a massive developer investment in time and effort. The choice to focus on user experience over efficiency is a product of a pretty obvious cost-benefit analysis.

      There's no question that user experience has improved dramatically in software in recent years. Performance has remained on par or improved, by virtue of hardware keeping up with, or exceeding, increased demand from increasingly inefficient software. There's a net benefit. But the reality is that in a way, it's a cost externalization: instead of reaping energy benefits from increasingly efficient hardware, we're reaping convenience benefits from increasingly abstracted software development.

    25. Re:This is new?! by hitmark · · Score: 1

      linear scaling never happens for long, thats true, but didnt a demo of the cell processor (PS3) show it decoding video by basically giving each SPU (or whatever they where called) a part of the overall task, and basically use them as a assembly line?

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    26. Re:This is new?! by Galactic+Dominator · · Score: 1

      L3 cache existed long before the average consumer could afford a multi cpu system.

      http://en.wikipedia.org/wiki/AMD_K6-III

      Your cpu vs core explanation is so distilled and poor it's no wonder you chose to post anonymously. There are all kinds of exceptions to the general points you make, and they occur so frequently across different designs there isn't much point in trying to come up with blanket statements. Unless you know the the specific hardware you're targeting, you have to assume multi-cpu, and let the hardware handle the rest.

      $sarcasm = "
      It's also interesting to hear these ingenious ideas about the os being a delegator of system resources instead of what is doing now. Also it great to see all these truly revolutionary ideas come from MS. The article also clears up any confusion about these proposed abstraction layers -- no other OS is doing it now. It's quite a feat for MS to propose yet another parallelism technique, perhaps next they'll be announcing a new web framework cause we're running dangerously low on them as well."

      http://www.freebsd.org/cgi/man.cgi?query=cpuset&apropos=0&sektion=0&manpath=FreeBSD+8.0-RELEASE+and+Ports&format=html
      http://wiki.freebsd.org/Hierarchical_Resource_Limits

      --
      brandelf -t FreeBSD /brain
    27. Re:This is new?! by PixelSlut · · Score: 2, Interesting

      Google? I'm a big Google fan (and despite the rest of my comment, also a big Android fan and totally love my Nexus One).. but if Google was so hardcore into efficiency, why the hell did they develop a new runtime for their Android that's based on Java?

      Google didn't seem like the best company to praise for efficiency. I would have picked some sort of video game company like id Software (yeah, I realize this an apples and oranges comparison though).

    28. Re:This is new?! by ebonum · · Score: 0, Troll

      It is good to know that MS intends to fill all the available cores in my machine with background processes and crap I don't need or want.

      I was wondering why it took this long.

    29. Re:This is new?! by Anonymous Coward · · Score: 0

      not sure I agree with the +5 insightful of the parent. since when was the OS the general bottleneck in general program performance? shit-arsed progammers who have no idea about concurrency, memory models and algorithm complexity are the problem. most OS kernels provide asyncronous methods for 'slow' (eg I/O) operations - not that most programmers understand how to use them. what more can an OS be expected to do?
      here's a tip... if you want performance, don't code in java, .net languages, python, ruby etc... stick to assembler, C and C++

    30. Re:This is new?! by Patman64 · · Score: 1

      there have been various complains about a "eternal spinning beachball" in the past, no?

      Usually this means poor application design. Apple includes a utility called "Spin Control" specifically so application designers can find out what is causing such issues.

    31. Re:This is new?! by jo_ham · · Score: 2, Insightful

      The beachball of rumination is there to remind you to book your holiday to the coast.

      It used to be a feature of 10.2 and earlier - I only see it occasionally in the later versions, but it is still there occasionally.

    32. Re:This is new?! by hitmark · · Score: 2, Funny

      now thats a program name that begs to be had fun with. Whoever named it that must have one impressive sense of irony.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    33. Re:This is new?! by Anonymous Coward · · Score: 0

      Snow Leopard !!!

      This is exactly what the overhaul in OSX was all about.

    34. Re:This is new?! by catmistake · · Score: 1
      agree with you on both points.

      ftfa:

      "With many-core, CPUs [could] become CPUs again," he said. "If we get enough of them, maybe we can start to hand them out" to individual programs

      This Wincore os dev sounds like he's been missing a few of the gems coming from R&D South. Right now, if an app is NOT multicore aware, this is how OS X tasks out apps. And I can empathize slightly if it's painful to make Windows apps multicore aware with current windows kernels, but all his examples are purely Windows issues. Apple has Grand Central Dispatch that is rumored to be pretty great for devs that want multicore aware apps.

      I think this is just a good example of how information sometimes doesn't make it to the informed. Either that or it's intentionally and incorrectly laying the issues inherent to Windows to other OS's because they are unaware that the other OS's actually had better solutions for authoring and facilitating multicore aware applications than Windows does.

      I don't understand his hypervisor analogy. Why doesn't he just use a hypervisor? Maybe the article is thin on details, but this guy's complaints are as fallicious as complaing that all OS's suck because of viruses, or saying we need to rethink all OS design because Internet Explorer still crashes sometimes. Microsoft want everyone to believe all OS's are fundamentally the same and the shortcomings of MIcrosoft OS's are true of all OS's, but this is simply false.

    35. Re:This is new?! by skids · · Score: 2, Insightful

      No glory in it either. Even when you're doing it for free, nobody seems to care if you produce an optimization.

      Plus, there are many more coders who have limited depth of understanding of OS interfacing, than there are coders who would go in after them to optimize. Heck, forget multicore -- how many applications fail to use vector units?

      Sometimes optimizations get dropped from code as too difficult to maintain. Rarely, enough of them get collected in one spot to make a library out of them. Even more rarely, those libraries actually get used.

      And it will stay that way until the consumer starts showing a preference for performance over features.

    36. Re:This is new?! by not+already+in+use · · Score: 2, Insightful

      An iPhone 3GS with a 600MHz CPU outperforms a Nexus One with a 1000MHz CPU.

      The reason the 3gs "outperforms" the N1 is because the N1 has more than twice the pixels of a 3GS. If the N1 had to drive the iphones resolution, it would wipe the floor with the iphones ass, all while supporting user app multitasking.

      --
      Similes are like metaphors
    37. Re:This is new?! by Anonymous Coward · · Score: 0

      If we want efficient code, we have to figure out ways to reward the programmers that write it. I don't see any sign that people anywhere are interested in doing this. Anyone have suggestions for how it might be done?

      It is sad to say that while it is impossible to reward individual programmers(1), the ones that matter are already being rewarded. The App stores allow pretty small parties to sell and reward by the piecemeal. Every time you download an App store program, you are promoting further use by inflating the download numbers, potentially making "app of the day" highlights possible for the dev, getting them further viewers. You can reward devs further by good word of mouth|forum (hey, get this app!) and tipping. Large US companies hide their devs because they don't want them to be targets in case of lawsuits, and they certainly don't want to help create godlike figures who can easily take off with their fame for X product if there's a falling.

      The reward process above works pretty well in the OS widget / App Store word because you can find dozens of programs to do the same, but only one or two will be simple, fast and relatively well QA'd. Sometimes none of those conditions are present, and since unfortunately many apps and downloads are free, the crap is just as visible as the good stuff.

      _1) Long digression here. One-man shareware efforts clearly have a name and address where you could write checks out to, back in the 1990's. Now, most people have webpages and don't need the danger of revealing much more than a Paypal tipjar link. Microteams from small companies used to be everywhere in the nineties, and the About menu used to give you names and pictures, which you could look for and send donations to. It's 2010 and it has been a long time since even Apple products have the humble single person or small team names. Everything is going nameless except for the App store areas, where you can once again pay per download or tip the person for their efforts.

    38. Re:This is new?! by Anonymous Coward · · Score: 2, Insightful

      Grand Central is not a novel concept, similar libraries like OpenMP have been around for years on *nix/Windows.

      Also, why are you being an iPhone shill in a discussion about multicore processing? The iPhone OS doesn't even really support multitasking, and runs on a mobile device with a single CPU.

    39. Re:This is new?! by ceoyoyo · · Score: 1

      I'm not sure if Windows has something similar, but the shared object system in ObjC/Cocoa is pretty fantastic. I think it's inherited from NeXt, so I suspect it's been in OS X all along. Nobody seems to know anything about it though.

      OS X has also always been a home-level OS that is designed to be (and always has been) used on multiprocessor machines.

      You're right, OS 9 and previous were sadly behind.

    40. Re:This is new?! by Mr.+Freeman · · Score: 4, Insightful

      Because Google ain't crunching data sets on fucking mobile phones. They're optimizing their servers and the applications that run on those servers because Google is so damn big that a fraction of a percent increase in efficiency translates into huge amounts of money saved through less wasted CPU time. Mobile phones aren't a part of google.

      If you phone runs a little less efficient then no one gives a damn. They want to make their phones easy to program for, which generally conflicts with efficiency.

      --
      -1 disagree is not a modifier for a reason. -1 troll, flaimbait, redundant, overrated are NOT acceptable substitutes.
    41. Re:This is new?! by mswhippingboy · · Score: 1

      Oh yea? When I started out, our machine only had one byte - and our entire programming staff had to share it - now get off my lawn!

      --
      Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
    42. Re:This is new?! by Anonymous Coward · · Score: 0

      I don't know if you noticed my sig, but I'm pretty familiar with what Apple have been up to these past few years ;-)>/quote>

      LOL BRAGGING. Dude you work in IT support. Don't make me laugh.

    43. Re:This is new?! by ceoyoyo · · Score: 1

      Perhaps multicore is just was OS design needs. The OS gets to hog, er, use effectively, a couple of cores and the rest are available for the things that should be using them - whatever apps the user wants to run.

      Maybe the OS could provide some better parallel programming tools, but parallel code is always going to be harder to write than serial, although it isn't overly difficult if you're using reasonable practices anyway.

    44. Re:This is new?! by foniksonik · · Score: 1

      Apple has even managed to streamline their transition methodology so it now appears to be a seamless experience... look at 32 bit to 64 bit handling in 10.6 - you get a dialogue telling you it's going to open in 32 bit mode, then it just works. Classic (OS 9) support was similar towards the end, you could open a Universal app in either Classic or OS X by checking a box.

      Microsoft bought Virtual PC but didn't do anything with it for several years. They should have dropped it into Vista as the emulator, auto-opened unsupported applications in an XP window - nobody would have known the difference... voila, backwards compatibility with anything supported on XP (which was almost everything). Finally they could have just go on with making a new OS.

      Now of course with Parallels or VMWare, you can run any Windows applications on any machine - Mac, Windows, Linux so you can have compatibility and choice.

      --
      A fool throws a stone into a well and a thousand sages can not remove it.
    45. Re:This is new?! by nine-times · · Score: 2, Informative

      I don't know if you had to support Mac users during the years of transition, but it wasn't quite as easy as you made it sound. It was pretty smooth for such a drastic change, but I wouldn't want to repeat it any more than necessary.

    46. Re:This is new?! by johanatan · · Score: 2, Interesting

      Umm, I don't know about your organization but at mine we do perf measurements and there are perf specificiations which must be met as much as any of the other specs.

    47. Re:This is new?! by Anonymous Coward · · Score: 1, Insightful

      If we want efficient code, we have to figure out ways to reward the programmers that write it. I don't see any sign that people anywhere are interested in doing this. Anyone have suggestions for how it might be done?

      Simple. When testing the program, put the programmer's nuts in a vise. Give the vise a quarter-turn for every second you spend waiting for the program to respond to your input.

    48. Re:This is new?! by amRadioHed · · Score: 3, Informative

      The iPhone certainly doesn't outperform a Nexus One. If you compare browser rendering tests the Nexus One consistently completes loading pages quite a bit faster then the iPhone. You are probably thinking of games performance, and while it's true that the iPhone gets better frame rates, you're forgetting that the Nexus One is pushing around 2.5 times more pixels so that's not exactly an apples to apples comparison.

      --
      We hope your rules and wisdom choke you / Now we are one in everlasting peace
    49. Re:This is new?! by Anonymous Coward · · Score: 0

      Arrrr! Spoken like a true Microsoftie, mate!

    50. Re:This is new?! by Nadaka · · Score: 1

      The android implementation of java is unoptimized shit. But java, in a good JIT implementation, is by no means slow. It has come a long long way in the last decade, its speed is approaching that of c++ and exceeding it in some circumstances.

    51. Re:This is new?! by Anonymous Coward · · Score: 0
    52. Re:This is new?! by garaged · · Score: 1

      mostly because hardware people, processor in particular, make stuff for the theory, in practice is very complicated to design something that can actually make good use of the multiple processing units on a single processor, ask to the IBM people, or any other hardware and operating system producer.

      --
      I'm positive, don't belive me look at my karma
    53. Re:This is new?! by Khyber · · Score: 1

      "Apple can't pretend that someone else will solve the problem for them through bigger hardware or the magic of open source."

      Actually, they do all the time - that's why they waited a while before switching over to Intel.

      For them, bigger hardware is the selling point. I rarely see a goddamned thing about efficiency marketed from Apple. They rely upon the next big hardware jump to push a product at three times what it should cost.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    54. Re:This is new?! by Anonymous Coward · · Score: 0

      How does Grand Central make a program that wasn't able to be multi-threaded with pthreads suddenly multi-threadable? Isn't it basically just an abstraction to pthreads with a few extra scheduling features?

    55. Re:This is new?! by dafing · · Score: 0, Offtopic

      I remember watching the Engadget review video of the Nexus One, and the iPhone blitzed both Android devices (Droid, N1)

      http://www.engadget.com/2010/01/04/nexus-one-review/

      You can say all you want about screen resolutions, fact is, if you want to use the internet, the iPhone zips way out in front for loading times, and has a more accurate touchscreen, it lets you get the job done faster. I am used to higher resolution displays, and can see how photos etc would look better, but sight unseen, I dont know if I'd prefer prettier banner ads over a fast and easier to use browser.

      I've wanted to play around with a Nexus One, as an "Apple Fanboi", I think its great that the iPhone is starting to get competition. Its a joke at the moment though, I dont even really think Android phones are sold in NZ? I think theres one or two, tucked away somewhere at the carrier store, only advertised as "With Google". "but my phone already does Google Search!" :)

      --
      --- ...or a new slashdot signature. Dear aunt, let's set so double the killer delete select all
    56. Re:This is new?! by bondsbw · · Score: 1

      Since when have OS designers optimised their code to milk every cycle from the available CPUs?

      I meant to imply that OS design may not matter so much... if there's an O(n^3) algorithm running in your web browser, it makes little difference whether the OS algorithm running beside it is O(n^2) or O(n).

      I wasn't clear... I never meant to imply that OS designers were already perfect, just that application software designers typically aren't.

      --
      All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
    57. Re:This is new?! by dudpixel · · Score: 1

      Then if you look at iPhone OS, that has been highly, highly optimized. An iPhone 3GS with a 600MHz CPU outperforms a Nexus One with a 1000MHz CPU.

      There is a difference between "highly optimised" and the iphone supporting hardware floating point while the nexus one doesn't (yet - the hardware does, but Android needs an update to support it).

      As for another view on performance, it seems ars doesn't agree with you:

      http://arstechnica.com/gadgets/reviews/2010/01/nexus-one-review.ars/4

      Those optimizations are part of the reason why Apple is currently undercutting both Android and Palm on price, which is the opposite of what was expected by Palm and Android developers and the entire industry.

      Actually, no. They're not undercutting Android because Android is free. They're also not undercutting all Android hardware, only some of it. And if you compare the specs on the hardware with a higher price, you'll find it is generally of a higher spec. How it performs is definitely a question of optimisations in software etc. but almost everything you have quoted has little to do with optimising an OS to use all available resources.

      --
      This seemed like a reasonable sig at the time.
    58. Re:This is new?! by Anonymous Coward · · Score: 2, Funny

      A: Restrict the time of daily torture to shortly before lunch, instead of afterwards or first thing in the morning. This goes slightly against my grateful learning of the Policy, but I believe it will improve appetite, reduce wasted corporate meal provisions, and it can reduce messes caused by bleeding on corporate property by allowing time for wounds to clot before work resumes.

      B: Allow the compiler designers to breathe fresh air for an hour a day, in the evening before returning them to their chains in the boiler room. Most compiler designers will use the opportunity to weep quietly to themselves, which will advantageously clean soot from their eyes. Their temporarily improved eyesight will aid in morning productivity. Fresh air in the morning would be misconstrued as a reward for something, but in the evenings they'll be too exhausted from the standard seventy hours work to do anything but quietly babble and faint.

      C: Use the whip at random after they've made their comments in our daily herding. Immediately whipping while they talk or right after discourages them from singling themselves out as disbelievers. When they are inevitably whipped, they'll naturally ask themselves why and your lesson will not go unheeded. Others being whipped at random will be that much more aware they shouldn't have listened, to the other lower workers.

      D: The rigours of programming often take a toll on programmers eyes and hands, so reducing the pressure of clamps and other productivity devices attached might be more effective if used sparingly.

      All hail to the management overlords. We obey, thou almighty ones. As I am but the brown haired guy from sub floor B, whom speaks to you with reverence. I eagerly await and deserve my anticipated punishments.

      Humbly,
      Systems Minion, B floor, seat 522.

    59. Re:This is new?! by dudpixel · · Score: 3, Informative

      Come up with the great new OS...

      hang on, this "new" OS you're referring to is basically UNIX (BSD). It was invented before Windows. Sure apple has modified it and put a shiny new layer on top (that works exceptionally smoothly, mind you), but if you wanna get technical, they didn't come up with a new OS, they improved an old one.

      --
      This seemed like a reasonable sig at the time.
    60. Re:This is new?! by AaronMK · · Score: 2, Interesting

      Grand Central Dispatch (GCD) is not some magic bullet that "deals with the cores", as you put it. The big thing it adds is a system wide tasking and scheduling component accessible to individual applications, making it easier to designate blocks of code (ie tasks) that can run in parallel, and spread those tasks among the available CPUs. Programmers still have the burden creating task parallel algorithms to solve their problems, and that is usually the tricky part. Creating a Thread Pool (GCD like functionality) component for an application (or using one someone else built, of which there have been many long before GCD), in both Windows and OS X is very easy in comparison.

      Don't get me wrong, GCD is a nice optimization and has some good features, but it is a relatively small and trivial part of the bigger problem.

    61. Re:This is new?! by LtGordon · · Score: 2, Informative

      ... but if Google was so hardcore into efficiency, why the hell did they develop a new runtime for their Android that's based on Java?

      Because the Java gets executed on the user's hardware. Google cares about efficiency insofar as it affects their own hardware requirements.

    62. Re:This is new?! by Anonymous Coward · · Score: 0

      So, programmers should never have to learn new skills? I'm guessing you've never heard of OpenMP, OpenCL, or have ever done some serious multi-threaded programming, because it's not nearly as bad as you make it sound - deadlock is a bitch to debug though.

    63. Re:This is new?! by jo42 · · Score: 1

      What's really cool with Snow Leopard is that if you implement your threaded stuff in OpenCL, it can run on CPU and/or GPU.

    64. Re:This is new?! by jc42 · · Score: 3, Insightful

      Hey, if you liked programming for a one-byte machine, maybe you should join the quantum computer research effort. They're just now looking forward to the creation of their first 8-bit "computer" in the very near future. ;-)

      Of course, you can do a bit more computing with 8 Q-bits than you can with 8 of the more mundane bits that the rest of us are using.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    65. Re:This is new?! by LtGordon · · Score: 1

      Those curious about what life would be like with application developers managing system resources, should try firing up an old copy of Windows 3.1 or MacOS and running 10 or so applications at the same time.

      Cooperative multitasking is great as long as yours is the only application that matters anyway. Why would I want to give away processing time to competing applications? Then it wouldn't be a competition.

    66. Re:This is new?! by exomondo · · Score: 1

      I'm not sure if Windows has something similar, but the shared object system in ObjC/Cocoa is pretty fantastic. I think it's inherited from NeXt, so I suspect it's been in OS X all along. Nobody seems to know anything about it though.

      AFAIK a cocoa shared-object is just a singleton, it's not a feature of the platform, it's just a pattern.

    67. Re:This is new?! by ceoyoyo · · Score: 1

      I did say "system."

      Cocoa has both vending and communication systems to work with the shared objects. You can, for example, create a shared object in your program and advertise it (via Bonjour/zeroconf) to the network. Other processes running on other threads or other machines can then connect to that shared object and it appears to be just another local object to them. Messages (method calls) to that "local" object are passed along to the actual object, wherever it is, and executed on it's thread or machine, then results are sent back, transparently to the programmer.

      With little work you can make some very nice distributed applications.

    68. Re:This is new?! by geekpowa · · Score: 1

      To some extent is a question of economics.

      Writing efficient software requires highly skilled programmers that are both expensive to hire and hard to find (and hard to replace). But hardware is cheap. Two approaches to solving a given business problem.

      • Hire skilled programmers - and make them deliver a well designed solution on limited equipment
      • Spend more money on equipment and hire less skilled programmers and tolerate the fact that the code they write will not be particularly efficient

      In my experience - in general business computing - is that the top of the curve is usually skewed more towards the 2nd approach. Of course every business problem is unique and your mileage may vary.

      For example, where I work right now I was heavily involved in the design and implementation of a lightweight inhouse application stack. All of the company competitors use some sort of off the shelf stack such as J2EE. The company consistently out-competes their competitors on price on turnkey sales: because competitor hardware/licence BOM is typically 2 to 3 times higher because of the substantial performance overheads their architectural decisions incur.

      Other considerations beyond performance exist too. I used to argue quite colourfully with some of my colleagues on the java vs c/c++ debate. That c/c++ yields faster code. My argument was that even if that were substantially true, the business outcome of using Java is better for other reasons (speed of development and reliability), now go back to your desk and try and fix all those memory leaks and seg faults :-). In the end I won the argument since the company no longer writes c/c++ code yet when they started they were a c/c++ shop. Everything is now in java : because it was evident that all things considered java yields better outcomes for the business.

    69. Re:This is new?! by exomondo · · Score: 1

      With little work you can make some very nice distributed applications.

      That's just use of a global context, and sure you can share that between threads and even processes but that doesn't help with concurrency problem, infact it exacerbates the problem, creating yet more shared mutable state.

    70. Re:This is new?! by Anonymous Coward · · Score: 0

      Can we say Apple-lover?

      In my experience, XGrid took a while to make quick-and-easy a reality, and we went with other third party stuff in the mean-time which still took quite a while to get to actually DO anything.

      Mobile phone performance has very little to do with objective benchmarking and more to do with experience and battery life. Does it feel smooth AND can I use it effectively? Sure my iPhone was innovative and is kinda slick but it is not my daily use phone b/c I can't task-switch quickly or even have multiple apps open. It can't play flash content, I can't open files or office documents (that I know of). I can't tether - officially anyway. Mine tethers but reboots constantly. I can't write just any app for it b/c Apple is god of the app store. Seems the iPhone is an accomplishment in doing a few things real well but NOT in doing what I need. Btw, my iphone which only has 3 pages of apps, does not page between them smoothly, so good luck with that iPad! Somehow my ugly duckling Treo 700p from 2006 which drives me nuts for many reasons better fits the need and does all those things (well, only some flash content) And it somehow accomplishes all this with slower hardware, a very-outdated OS that has an archaic cooperative task switching threading model. That WebOS also seems to work fast and well from what I've seen - it had a rough start for sure. As long as you don't have too many apps running at the same time - then it does get quite slow.

    71. Re:This is new?! by node+3 · · Score: 1

      Grand Central Dispatch (GCD) is not some magic bullet that "deals with the cores", as you put it.

      No, that's exactly what it does. It keeps track of the system resources, and shuffles threads around to where they are most optimal. A simple demonstration of this is to run Task Manager on Windows, and Activity Monitor on a Mac, and watch how the cores (and hyperthreading cores) are used. You'll see Mac OS X does a much better job of this. It can also, using OpenCL, push tasks across the cores on your GPU.

      Now, of course, like you said, you can't just magically spread a single-threaded app across multiple cores. But that's not what this story is about.

    72. Re:This is new?! by binarylarry · · Score: 0, Flamebait

      Apparently because they don't hire stupid people like you.

      --
      Mod me down, my New Earth Global Warmingist friends!
    73. Re:This is new?! by Bigjeff5 · · Score: 1

      Why has it taken so long for the OS designers to get with the program?

      Demand.

      Seriously, what the hell do you think drives this stuff?

      Things aren't going to shift in a major way until one of two things happen:

      1.) Microsoft decides it's finally time to re-design Windows from the ground up. They hold 95% of the market, so it is they who must make this change.

      2.) Someone develops an OS that is so mind-blowingly awesome that people are willing to dump Windows in large numbers, forcing the market to turn in this new direction in order to compete.

      2 isn't likely, but it could happen. This is something the Linux crowd could be pushing, because being the most flexible OS group on the market they are in the best position to both pursue this direction and still maintain the status-quo. I'd bank more on something of a hybrid happening, where Microsoft starts losing business because smaller companies start writing killer apps to run on an individual core in a hypervisor. By ignoring the OS completely and interfacing directly with the hardware, whatever that application does it will be the fastest one on the market by far. Before too long you'll end up with a hypervisor-OS that merely tells the applications which CPU it gets and where its memory is. The OS will be shoved further into the background, as it should be, and everything will be just plain cooler.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    74. Re:This is new?! by Anonymous Coward · · Score: 0

      The feature is called "Grand Central" and enables an app developer to make fairly small modifications to their app which cause it to go from pegging 1 CPU to pegging an unlimited number of CPU's

      I'm not sure if I'd call that an improvement...

    75. Re:This is new?! by Locutus · · Score: 1

      but they were not getting web browsers embedded in the OS like Windows was, nor all the other crap Microsoft shoveled into the OS to kill off some competitor. I remember once hearing that one of the reasons IBM and Microsoft had a falling out over OS/2 was because the Microsoft OS designers wanted specific preferences for the GUI/desktop performance while the IBM designers wanted a tight, small, fast kernel with a fair scheduler.

      I also remember the one time someone compared IBM OS/2 with Microsoft NT and Novell Netware on a dual CPU system. There were a number of cases where OS/2, with one CPU disabled, outperformed both NT and Netware while they were running in full dual mode.

      This is probably just another attempt to explain why Microsoft is rewriting Windows from the ground up once again and will try to sell it as a new OS. Here come the Windows 8 news stories.

      LoB

      --
      "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
    76. Re:This is new?! by mogness · · Score: 0

      I think that's the point. If the OS designers properly design their OS for multi-core processors, developers on that platform won't have to because the OS will take care of it.

      --
      that's teh shizzle bizzle
    77. Re:This is new?! by AaronMK · · Score: 1

      That is a very big and potentially misleading simplification. You make it sound as if simply writing your code in or porting to OpenCL . It is not like that.

      Typically, "threaded stuff" only implies Task Parallelism, a set of tasks that can run in parallel, and they are usually not the same operation. Grand Central Dispatch is more suited to that model. OpenCL is more suited for Data Parallelism, doing the SAME SET OF OPERATIONS on a number of items AT THE SAME TIME. There is a lot of overhead in passing data to and from the GPU, so that number of items needs to be high to offset that cost. (Typically in the thousands.)

      Solutions have to be reworked quite a bit to adopt that data parallel, and that is assuming they can be a good fit for that model in the first place. If you can, then there can be a very substantial performance increase,

      Now, as you said, you can run OpenCL on the CPU (and it is part of the model), but if you are not taking advantage of the GPU, than why not just do standard multi-threaded code? (I am just getting started with OpenCL, so there might be a good reason of which I am not yet aware.)

    78. Re:This is new?! by tsotha · · Score: 2, Insightful

      It's not a failure among programmers at all - it's a business decision. The main reason software is less efficient is the costs are so heavily tilted toward software development instead of hardware. For the vast majority of business applications companies are using generalized frameworks to trade CPU cycles and memory for development time.

      Even in terms of development style, it just isn't worth it to optimize your code if it's going to substantially increase development time. People are expensive. Time is expensive. Hardware is not.

      Now, if you're Microsoft, or Blizzard, or Google, then the equation changes, since your code is running on millions of CPUs. But that's not the normal case. If I'm writing a web service so the accounting software at headquarters can tell how many widgets are in my company's warehouse, it really doesn't matter how inefficient the code is (within reason) as long as it works reliably and is easy to maintain. What my boss really wants is for me to finish as quickly as possible and move on to the next task.

    79. Re:This is new?! by drsmithy · · Score: 1

      If we want efficient code, we have to figure out ways to reward the programmers that write it. I don't see any sign that people anywhere are interested in doing this. Anyone have suggestions for how it might be done?

      Defining what you mean by "efficient" (and why that definition should be the primary goal of software development) would probably be a good place to start.

    80. Re:This is new?! by tyrione · · Score: 1

      Grand Central is not a novel concept, similar libraries like OpenMP have been around for years on *nix/Windows.

      Also, why are you being an iPhone shill in a discussion about multicore processing? The iPhone OS doesn't even really support multitasking, and runs on a mobile device with a single CPU.

      Except that Grand Central and it's blocks structure with LLVM does it system-wide, out-of-the-box and not like OpenMP which does it application wide.

    81. Re:This is new?! by drsmithy · · Score: 0, Troll

      1.) Microsoft decides it's finally time to re-design Windows from the ground up. They hold 95% of the market, so it is they who must make this change.

      Why would they do this ? They already have an OS that was designed from day 1 for multiprocessor systems and is, at worst, on par with every alternative platform.

      Before too long you'll end up with a hypervisor-OS that merely tells the applications which CPU it gets and where its memory is. The OS will be shoved further into the background, as it should be, and everything will be just plain cooler.

      What do you think happens _now_ ?

    82. Re:This is new?! by Anonymous Coward · · Score: 0

      I can only agree.

      Inline quote 'It doesn't sound easily backwards compatible (but I might be wrong there), and there's a certain simplicity to 'reserve one core for the OS, '

      I postulated this approach years ago.

      I believe that M$ charges for additional cores? I was running multi core systems with Linux several years ago.

    83. Re:This is new?! by Anonymous Coward · · Score: 0

      Why has it taken so long for the OS designers to get with the program?

      Coming up with a new OS paradigm is hard, but doable.

      Coming up with a viable new OS that uses that paradigm is much harder;

      Not really... microkernel architectures have been around for decades. Each OS service is its own process.

    84. Re:This is new?! by mjwx · · Score: 5, Informative

      Then if you look at iPhone OS, that has been highly, highly optimized. An iPhone 3GS with a 600MHz CPU outperforms a Nexus One with a 1000MHz CPU. The iPhone 3G with a 400MHz CPU outperforms a Palm Pre with 600MHz CPU

      Citation needed? I think you'll find that Iphone only appears to outperform Android because Android is doing a lot more then the Iphone. Further more many things that work on Android do not work on Iphone, slashdot for instance works fine on my HTC Dream or newer Motorola Milestone with the standard browser, it works even better with Dolphin browser.

      This cannot be a fair comparison until the Iphone can do everything that Android phones can, unless you want to compare functionality where Iphone is an epic failure.

      Those optimizations are part of the reason why Apple is currently undercutting both Android and Palm on price,

      Now I can tell you're full of it. All prices are incl of local taxes, and UK VAT does not apply outside the EU for those in Australia, Canada and the US.

      UK Expansys
      Motorola Milestone GBP 379
      Nexus 1 GBP 599
      Iphone 32 GB GBP 799

      AU Mobicity
      Motorola Milestone A$659
      Nexus 1 A$849
      Iphone 16 GB A$959

      The cheapest Iphone 3GS available is A$100 more expensive then the newer Motorola Milestone (droid for the Yanks) and Google Nexus One. Not to mention that both the Milestone and Nexus One can do more as well as lack the restrictions of the Iphone. But then again I suspect you were merely looking to confirm your quite obvious bias rather then do an accurate comparison.

      Apple's operating systems are not very well optimised, not even as much as Windows operating systems, Apple's OS pretend to have optimisation by providing the OS with more hardware then it needs and limiting functionality to prevent any perceived loss of speed. Most people using a Mac or Iphone rarely use the full power of the hardware, ergo an un-optimised OS goes unnoticed by the user. Here is the core of the design (in an engineering perspective) a design does not have to work well, it just has to work. The vast majority of people will ignore tiny flaws if they can get the task done, OTOH if a computer doesn't do the task the user will get annoyed no matter how pretty the interface.

      As a good developer friend of mine likes to say, "If given the choice, a user will press the 'I just want it to work today' button". OSX provides this very shiny button but only in a few select places, Windows provides this not so shiny button almost everywhere. This is why Windows is still the number one OS on the planet.

      --
      Calling someone a "hater" only means you can not rationally rebut their argument.
    85. Re:This is new?! by mjwx · · Score: 2, Insightful

      The reason the 3gs "outperforms" the N1 is because the N1 has more than twice the pixels of a 3GS. If the N1 had to drive the iphones resolution, it would wipe the floor with the iphones ass, all while supporting user app multitasking.

      What many people are forgetting is that the N1 has no GPU, it requires the CPU to do all the rendering, which makes the rendering a little slower.

      We are better off comparing it to the Motorola Milestone (Droid in the US) which has a GPU.

      --
      Calling someone a "hater" only means you can not rationally rebut their argument.
    86. Re:This is new?! by Anonymous Coward · · Score: 3, Interesting

      I don't think you understood the point he was trying to make. Windows has had threading since 1993 and a threadpool API since before OS X was released. The point he was making was not that Windows wasn't good enough for multiple cores, it was that the current paradigm about how OSes and apps relate wasn't good enough.

      Back when you only had a single core CPU, the OS had to share the CPU with all the apps. Thus arose the kernel/user model where the OS ran in kernel mode and the apps ran in user mode. When an app needed some system service it would stop running, the CPU would switch to kernel mode, perform the server, and go back to user mode so the app could resume. When multiple CPUs and then multiple cores per CPU became available, this model was simply expanded so that the OS ran on every CPU core. This is called the SMP (Symmetric MultiProcessing) model because every processor core has the same duties as all the others.

      I think what he's saying is that having the OS run on every core means that data structures it uses will have to be shared across all the cores in the system, causing problems like contention and false sharing. It sounds like he is considering what would happen if the OS just ran on some cores and apps ran on others. If an app needs a system service it need not stop running, switch into kernel mode, run the OS, etc. Instead it could send a message to one of the cores that the OS is running on and go about its business, hopefully staying more responsive that way. Obviously the app can't have full control of the CPU because it has to share the computer nicely, but it doesn't need a fully-blown kernel either, so the thin supervisor layer is what he related to a hypervisor.

      It may be hard to imagine a 256-core computer because Apple doesn't make any, but Windows can already run on 256 cores. Of course those are huge server boxes, but it won't be long before it's common to have desktop boxes with 256 logical CPUs (2 sockets, 32 cores/socket, 4 threads/core), and then you can imagine that a high-end server might have upwards of 2048 cores. At that point does it even make sense to have the OS running on hundreds or thousands of cores simultaneously? Probably not.

      I'm not saying that this guy has the right solution, but he has some interesting ideas worth considering.

      dom

    87. Re:This is new?! by mjwx · · Score: 1

      Actually, no. They're not undercutting Android because Android is free. They're also not undercutting all Android hardware, only some of it.

      They are not actually undercutting it at all. The Iphone is closet to the Motorola Milestone in specs, seeing as we cant fairly compare features. Here are the prices for a UK and Australian phone retailer. Shamelessly copied from a previous post. Links to each product are in this post.

      UK Expansys
      Motorola Milestone GBP 379
      Nexus 1 GBP 599
      Iphone 32 GB GBP 799

      AU Mobicity
      Motorola Milestone A$659
      Nexus 1 A$849
      Iphone 16 GB A$959

      The Iphone is not undercutting Android in price, the Milestone is nearly half the price of an Iphone. Even the N1 is cheaper then the 16 GB Iphone 3GS and the 3GS is almost a year old.

      --
      Calling someone a "hater" only means you can not rationally rebut their argument.
    88. Re:This is new?! by mini+me · · Score: 1

      The "shiny new layer" you are referring to is basically NeXTSTEP. Apple may have made a couple of minor interface tweaks to make it familiar to existing Apple customers, but if you wanna get technical, they didn't improve an old OS, they rebranded someone else's.

    89. Re:This is new?! by IamTheRealMike · · Score: 4, Insightful

      Why Java for Android? This is a good question. There are several reasons (that the Android team have discussed).

      One is that ARM native code is bigger, size-wise, than Dalvik VM bytecode. So it takes up more memory. Unlike the iPhone, Android was designed from the start to multi-task between lots of different (user installed) apps. It's quite feasible to rapidly switch between apps with no delay on Android, and that means keeping multiple running programs in RAM simultaneously. So trading off some CPU time for memory is potentially a good design. Now that said, Java has some design issues that make it more profligate with heap memory than it maybe needs to be (eg utf16 for strings) so I don't have a good feel for whether the savings are cancelled out or not, but it's a justification given by the Android team.

      Another is that Java is dramatically easier to program than a C-like language. I mean, incredibly monstrously easier. One problem with languages like C++ or Objective-C is that lots of people think they understand them but very few programmers really do. Case in point - I have an Apple-mad friend who ironically programs C# servers on Windows for his day job. But he figured he'd learn iPad development. I warned him that unmanaged development was a PITA but he wasn't convinced, so I showed him a page that discussed reference counting in ObjC (retain/release). He read it and said "well that seems simple enough" - doh. Another one bites the dust. I walked him through cycle leaks, ref leaks on error paths (no smart pointers in objc!), and some basic thread safety issues. By the end he realized that what looked simple really wasn't at all.

      By going with Java, Android devs skip that pain. I'm fluent in C++ and Java, and have used both regularly in the past year. Java is reliably easier to write correct code in. I don't think it's unreasonable to base your OS on it. Microsoft has moved a lot of Windows development to .NET over the last few years for the same reasons.

      Fortunately, being based on Java doesn't mean Android is inherently inefficient. Large parts of the runtime are written in C++, and you can write parts of your own app in native code too (eg for 3D graphics). You need to use Java to use most of the OS APIs but you really shouldn't be experiencing perf problems with things like gui layout - if you are, that's a hint you need to simplify your app rather than try to micro-optimize.

    90. Re:This is new?! by DavidRawling · · Score: 1

      MS charges for software based on the number of "CPUs". This is MS speak that potentially could more accurately be considered the number of "processor packages" on the board, or in the computer.

      So if a system has one quad-core processor with hyper-threading (8 logical CPUs) it's one CPU for processor licensing. The server beside it with two six-core processors + hyper-threading (24 logical CPUs) and a further two unused sockets for the same CPU package is two licensing CPUs. Add the two extra processor packages (total 48 logical CPUs) and you need a total of 4 processor licenses.

      It used to be that Oracle charged per simultaneous thread, so hyper-threading doubled the license count (cost) and multi-core did the same thing. Microsoft murdered them on DB pricing (SQL was cheaper per CPU, then quadruple the Oracle cost for the same dual processor with hyperthreading box but only double for MS) and I think Oracle have changed their tune now.

    91. Re:This is new?! by cbope · · Score: 1

      Funny, when I read parent's post I immediately thought of XP mode in Windows 7. However, I get the feeling the response would be different without the Reality Distortion Field...

      I do believe that MS got one major thing wrong with XP mode, in that they include it only in the non-consumer versions of the OS. It should be available in any flavor of Win7. I do appreciate that they recently removed the hardware requirement for virtualization. This could at least help those with crippled Intel CPU's that do not support hardware virtualization.

      Intel deserves some blame here, since they market chips with the same model number, but different features... they did this in several Core 2 models although I am not sure if this has continued with Core i3-5-7. I surely hope not.

    92. Re:This is new?! by lpq · · Score: 1

      When have then been allowed to?

      It's always ship ship ship...never optimize.

      I got marked down in job reviews for spending my own time doing optimizations -- even though I got my daily work done -- if I had so much extra energy or 'cycles' to do my own optimization or , then when I worked for managers, they always coveted *my* cycles.

      Stupid managers -- always greedy.

      Customers don't pay big bucks for efficiency -- they pay to have something WORK. It's always the next big feature that they think they need (or they've been sold on). So optimizing and testing take second and third seat.

    93. Re:This is new?! by julesh · · Score: 3, Informative

      One is that ARM native code is bigger, size-wise, than Dalvik VM bytecode.

      Citation needed. Dalvik is better than baseline Java bytecode, agreed. But so is ARM native code. [http://portal.acm.org/citation.cfm?id=377837&dl=GUIDE&coll=GUIDE&CFID=82959920&CFTOKEN=24064384 - "[...] the code efficiency of Java turns out to be inferior to that of ARM Thumb"]. I can find no direct comparison of ARM Thumb and Dalvik, so I can't tell you which produces the smaller code size.

      So it takes up more memory.

      Even if your first statement is true, this doesn't necessarily follow. VMs add overhead, usually using up somewhat more runtime memory to execute, particularly if a JIT is used (the current version of Dalvik doesn't have one, but the next one apparently will).

    94. Re:This is new?! by Taco+Cowboy · · Score: 1

      No glory in it either. Even when you're doing it for free, nobody seems to care if you produce an optimization.

      Plus, there are many more coders who have limited depth of understanding of OS interfacing, than there are coders who would go in after them to optimize. Heck, forget multicore -- how many applications fail to use vector units?

      Sometimes optimizations get dropped from code as too difficult to maintain. Rarely, enough of them get collected in one spot to make a library out of them. Even more rarely, those libraries actually get used.

      And it will stay that way until the consumer starts showing a preference for performance over features.

      There are two layers of optimization we need to be awared about.

      1. Optimization on the application side.

      2. Optimization on the OS side.

      Even if optimization taken place on the application side, if the OS isn't optimized - just like the article has stated - on a multi-core machine, the OS will gonna retard the execution of the application anyway.

      So ... it falls back to item #2.

      If the OS isn't optimized, the whole thing will still run sub-par.

      --
      Muchas Gracias, Señor Edward Snowden !
    95. Re:This is new?! by Z00L00K · · Score: 1

      It's a lot more problematic to design an OS for multi-core than it is to design an application since you will never really know what kind of application that will run on the operating system.

      Of course - Linux has some features today for multi-processors, among them support for NUMA (Non-Uniform Memory Access) architecture.

      In a multi-core solution the OS should also take into account how to best utilize different cores for best performance - especially when cache memory for each core and processor comes into account.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    96. Re:This is new?! by Runaway1956 · · Score: 1

      I want to argue that. But, first, I'll ask for an example. What implementations, and what versions, on which architectures and operating systems are so fast and efficient?

      It's been my experience that Java is an overbloated resource hog, and that "efficiency" is the LAST consideration when anyone programs with Java. It seems that some of the alternatives (OpenJava, etc) might be a little more efficient than Sun's Java, but only marginally.

      If you can point me to a really efficient implementation of Java that will run on Linux and Windows, both 32 and 64 bit, I'll be forever grateful. Maybe even grateful enough to say nice things about you and Java!!

      --
      "Windows is like the faint smell of piss in a subway: it's there, and there's nothing you can do about it." - Charlie Br
    97. Re:This is new?! by Anonymous Coward · · Score: 0

      you get a dialogue telling you it's going to open in 32 bit mode, then it just works.

      Hmmm. The 64-bit Windows XP/Vista/7 don't even display any annoying dialogue to you. They just work.

    98. Re:This is new?! by wisty · · Score: 1

      I think Microsoft had something called DCOM ... but you don't hear them bragging ;)

    99. Re:This is new?! by Anonymous Coward · · Score: 0

      So far, I think Apple has had the most successful transition strategy

      Except it was Microsoft who came up with that strategy. They have emulated MS-DOS environment since Windows 95. They dropped only recently with the introduction of 64-bit Windows.

    100. Re:This is new?! by wisty · · Score: 1

      Damn yeah. But then MS would have been able to make a lean, mean kernel without worrying about compatibility. What would all their managers have done?

    101. Re:This is new?! by severoon · · Score: 1

      We know how to take advantage of parallel processing...it's an approach that does away with side effects called functional programming (see Erlang, Haskell, etc). The problem is not that we don't take advantage of it in the right ways...the problem is that CPUs have outpaced other hardware. The bottleneck is not your CPU--it's virtual memory swapping in and out. Continue increasing your CPU speed, and it'll just sit idle 99.9% of the time instead of 99.5% waiting for your disk.

      The secret to performance is no moving parts. We need super fast SSDs. SSDs are super fast at reading, not so much at writing--so why aren't we already using them on the motherboard to cache disk accesses while not much else is going on? Some other more pressing issues that squeezing every last bit of processing power out of CPUs, why is wired ethernet still so slow, and why is wifi lagging behind? Come on already...we have the tech for this stuff.

      --
      but have you considered the following argument: shut up.
    102. Re:This is new?! by ThatMegathronDude · · Score: 1

      Video encoding != video decoding. You can decode a video in parallel pretty easily. Encoding it can be parallelized, but the best results will come from a serial process.

    103. Re:This is new?! by BenoitRen · · Score: 1

      Another is that Java is dramatically easier to program than a C-like language. I mean, incredibly monstrously easier.

      As someone who has programmed in C, C++, and Java, I disagree. Java's quirks are a pain in the behind. Powerful features like operator overloading (which you'd think they'd at least have used on strings) don't exist.

      One problem with languages like C++ or Objective-C is that lots of people think they understand them but very few programmers really do. Case in point - I have an Apple-mad friend who ironically programs C# servers on Windows for his day job. But he figured he'd learn iPad development. I warned him that unmanaged development was a PITA but he wasn't convinced, so I showed him a page that discussed reference counting in ObjC (retain/release). He read it and said "well that seems simple enough" - doh. Another one bites the dust. I walked him through cycle leaks, ref leaks on error paths (no smart pointers in objc!), and some basic thread safety issues. By the end he realized that what looked simple really wasn't at all.

      Right, because you really need reference counting and all that jazz all the time. Face it, if you can't write code that doesn't leak in languages that don't have garbage collection, you'll have leaking programs in Java as well.

    104. Re:This is new?! by SenseiLeNoir · · Score: 1

      I agree with you in principle. A good JIT oriented runtime, such as Java, and .Net, can due to their nature (run time optimization, etc) can appraoch and even exceed C++ in many circumstances. in fact a lot of the performance loss in such systems is due to the JRE, and CLRs in built protection mechanisms (such as garbage collection, and bounds checking), which if were used as standard in C++ would make them a lot more equivelent in terms of performance.

      I know many seasonsed C++ developers "poo poo" garbage collection, saying that a good developer can manage memory better. This is not always true and actual evidence point the other direction, ie Garbage Collection can IMPROVE performance, even over skilled engineers. the reasons include the fact that garbage collection allows such optimisations such as moving bocks around in memory (defragmentation) without effecting the code. Socondly, highly tuned hand crafted memory management, requires econsiderable development time, and when done as part of a team effort, can lead to the optimisations being not "optimal".

      Google around for more infomation, such as this blog:
      http://hollycummins.blogspot.com/2008/10/garbage-collection-myths.html

      But going back on topic. Multi Core processor support. A good JVM, or CLR type environmrnt can abstract mutithreaded applications quite nicely. Even old applications can utilise different threading mechanisms by just "upgrading" the runtime. On top of that, languages based on these runtimes make programming threads easy, so that developers (Especially average ones) can utilise threads without requiring the knowledge of black arts.

      --
      Have a nice day!
    105. Re:This is new?! by SenseiLeNoir · · Score: 1

      you woudl be surprised at HOW much Java is used in the back end in Google. One big example, GMAIL.

      Java CAN be very efficient and perfromant if doen right (just like C++). IT just depends on the developers, and Java has its fair share of mediocre developers too.

      --
      Have a nice day!
    106. Re:This is new?! by nmg196 · · Score: 1

      Users and developers don't want their OS to change. They can cope with superficial astheic improvements such as making the start button round or a shiny reflection applied to their title bars, but if you make even a tiny change to how the OS actually works (as they did with Vista) then people (especially Slashdot readers) will immediately say that the whole OS is crap and start slating it everywhere. Vista tried this, and flopped. The changes in Vista were essentially miniscule, so imagine what hell would break lose if Microsoft changed the underlying architecture of the process model that would undoubtedly break thousands of applications overnight. They would sell more than a handful of copies.

      Users (and developers) would rather throw a fortune at hardware to try and use modern apps on the ancient OS kernel they're used to at a decent speed, rather than move to a more effiicent and modern platform.

    107. Re:This is new?! by taucross · · Score: 1

      Google are making a business decision, not a technical one. It's just easier to see because Google's business model relies so heavily on optimization.

      As a decision-maker within a business, I too care about optimization - if you can provide me with a better bottom line. Frankly, with most business applications you will not be able to make a decent business case. So you save 5%, 10%, 15% by optimizing? Just show me that the cost of optimization is less than the overall projected benefit. But this is an unlikely scenario for most business applications.

      Even within a large business, persons seeking to re-factor or fine-tune applications will not be able to justify the cost. But if you work at Google and say that it will mean 3% less servers over ten years - well, in Google's case, that's a lot of servers. The project may well be justified.

      What I'm saying here is that Google cares about efficient performance inasmuch as it serves business interest, like any other company. The deciding factor for Google is the scale of its operation.

      --
      "In the absence of the ability to establish the attribute of truth they tried to establish the noble attributes."
    108. Re:This is new?! by VulpesFoxnik · · Score: 2, Insightful

      I think it's more of a architecture problem. The x86 is a horrible creature, which has an inefficient language. What x86 does in a huge set of instructions, Arm can often do in 2/3 that many. All Mhz does is eat more power and generate more heat. The answer is smarter digital languages.

      --
      RES PUBLICA NON DOMINETUR
    109. Re:This is new?! by Anonymous Coward · · Score: 0

      "I don't see any sign that people anywhere are interested in doing this. Anyone have suggestions for how it might be done?"

      Answer: Video game engine development on consoles. Its a multibillion dollar industry you may have heard of.

      They are severely limited in memory. So you have to optimise heavily. These engines then usually get carried over to the next generation, get a bit bloated and then as the console matures become more optimised again. By the end of the consoles generation the engine will usually be very efficient. This generation of multicore consoles its training an entire generation of coders to think parallel.

    110. Re:This is new?! by Anonymous Coward · · Score: 0

      Good points! Linux 64 bit is also a good example. While it's out there for a very long time, applications still tend to suck for this architecture, though seldom these days.

    111. Re:This is new?! by xtracto · · Score: 1

      From what I recall he then went on to work at FPS systems which was an array processor that you could add onto other machines (I think vaxen...but I could be wrong there..)

      Wow, I didn't know First Person Shooters were so old! how many fps did he get back then?

      --
      Ubuntu is an African word meaning 'I can't configure Debian'
    112. Re:This is new?! by Taco+Cowboy · · Score: 1

      If we want efficient code, we have to figure out ways to reward the programmers that write it. I don't see any sign that people anywhere are interested in doing this. Anyone have suggestions for how it might be done?

      Simple. When testing the program, put the programmer's nuts in a vise. Give the vise a quarter-turn for every second you spend waiting for the program to respond to your input.

      What if the programmer is a SHE? No nut to twist, man.

      --
      Muchas Gracias, Señor Edward Snowden !
    113. Re:This is new?! by exomondo · · Score: 1

      Apple's decision to put provision for this in their Snow Leopard OS is a clear demonstration of their forward (and practical) thinking. Where are all the others?

      Apple aren't ahead of the curve on this, TPL and PLINQ were available before GCD was. Not sure why you're trumpeting their Thread-pool (yes the idea has been around for a long time, as have implementations) and scheduler so much. Threading abstractions are not new. And it absolutely is not any kind of solution to the core concurrency problem of splitting a serial problem into smaller parallel tasks. It seems to me you don't quite understand the issue here or what GCD actually is, because it really isn't anything revolutionary.

    114. Re:This is new?! by TheRaven64 · · Score: 1

      Umm, no. He's talking about the Distributed Objects mechanism, which depends on some features of the Objective-C runtime and the Foundation framework. It comes from NeXT and there's been a working GNUstep implementation for about 15 years too. It allows you to publish an object and then send it messages from another process (optionally on another machine) in exactly the same way that you would with a local object. It's very powerful; you can decompose a large program into several processes using it and have them communicate transparently.

      --
      I am TheRaven on Soylent News
    115. Re:This is new?! by SimonTheSoundMan · · Score: 1

      Only time I see it these days, in 10.6 anyway, is when the hard drive s being thrashed for some reason.

      I just had a beech ball while trying to install some drivers, however I had just altered a bunch of kext files and kextd was working hard away, with 500+ I/O's a second to my little 2.5inch hard drive.

    116. Re:This is new?! by TheRaven64 · · Score: 1

      OpenMP has been available on OS X for a long time too. Only with GCC though - there's no support for it yet in Clang and there hasn't been much demand for implementing it (I guess it's not a panacea after all). GCD is a very different concept to OpenMP, working at a different granularity and with a different model. There is nothing stopping you from combining OpenMP and GCD, and you could easily implement the former in terms of the latter.

      --
      I am TheRaven on Soylent News
    117. Re:This is new?! by TechnicalFool · · Score: 1

      New idea: An OS based around RedCode. Oh go on, you know you want to.

      --
      09F9 1102 9D74 E35B D841 56C5 6356 88C0
    118. Re:This is new?! by ShakaUVM · · Score: 1

      >>Right, because you really need reference counting and all that jazz all the time. Face it, if you can't write code that doesn't leak in languages that don't have garbage collection, you'll have leaking programs in Java as well.

      Quoted for truth.

      Garbage collection only fixes certain types of garbage coding.

    119. Re:This is new?! by YourExperiment · · Score: 2, Funny

      Of course, you can do a bit more computing with 8 Q-bits than you can with 8 of the more mundane bits that the rest of us are using.

      So an 8-bit quantum computer is the equivalent of a 9-bit standard computer?

    120. Re:This is new?! by Toy+G · · Score: 1

      Where are mods points when I need them? +1 Informative.

      --
      -- Let's go Viridian.
    121. Re:This is new?! by l3v1 · · Score: 1

      Most programmers I talk to have issues trying to understand the interweaving logic of multi-threaded programing.

      Well, I wouldn't want to work with those.

      Most computationally intensive/expensive stuff I do these days don't have a change of performing well unless being multi-threaded. Times are past now, when you could say well, this is slow, but faster cpu's will come out soon.

      --
      I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
    122. Re:This is new?! by Anonymous Coward · · Score: 0

      I guess it's up to MS to make a easy to use idiot-proof threaded framework for crappy programmers to use.

      You must work for Sony and your name rhymes with HardToProgramForOnPurpose-aragi.

    123. Re:This is new?! by maxwell+demon · · Score: 1

      The bottleneck is not your CPU--it's virtual memory swapping in and out.

      If the bottleneck is virtual memory swapping in and out, either you have too little memory, or horrible bloatware (or both).

      The solution to excessive swapping isn't faster disks, it's more memory and/or more memory efficient applications.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    124. Re:This is new?! by maxwell+demon · · Score: 1

      It's been my experience that Java is an overbloated resource hog, and that "efficiency" is the LAST consideration when anyone programs with Java.

      Well, there are different types of efficiency. One is time efficiency, which is probably what the GP meant. I can imagine that (apart from startup time) a JIT engine can get quite close to a natively compiled program (but I doubt that it will get faster, except for specially crafted benchmarks).

      The other type is memory (or more generally, ressource) efficienty, which seems to be what you are referring to. And yes, Java is a ressource hog, and I strongly doubt that this can be changed, because Java relies on GC, and GC in most situations massively increases memory usage.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    125. Re:This is new?! by ceoyoyo · · Score: 1

      Very little helps with concurrency problems. Ease of communication and setting up threads and processes is important as well.

      I think it's actually distributed objects, not shared.

    126. Re:This is new?! by ceoyoyo · · Score: 1

      Ever used DCOM?

    127. Re:This is new?! by Anonymous Coward · · Score: 0

      Of course, you can do a bit more computing with 8 Q-bits than you can with 8 of the more mundane bits that the rest of us are using.

      ... only if it is attached to a server farm to find the real answer from the combinatorial mess produced by the Q

    128. Re:This is new?! by Mystiq · · Score: 0

      The problem with rewarding for efficiency is it also decreases efficiency on the project you're working on. It takes time to make code more efficient. It's faster (for humans) to just get it to work. It's all rather unfortunate. I'd rather spend some time on something to make it a more pleasant experience for the user but this want usually conflicts with time needs. Until there's something amazing coming out that can bring up the efficiency of writing applications, efficiency in code will tend to take a back seat.

      Case in point, a project I'm working on now, I went to meet up with the guy who'll be using it and decided to spend a little bit of time making a long process a little faster. Then realized it was futile to keep going with the optimization because I was already pressed for time due to last minute additions -- and the project is already deemed late.

      My last job my boss really didn't care if something was well-coded. As long as it worked, time and money trumped how well the programs ran.

    129. Re:This is new?! by mario_grgic · · Score: 1

      It was updating your kernel extensions cache. Normally this is done during boot if the cache is stale, but apparently the driver installer decided to flush the cache.

      --
      As the island of our knowledge grows, so does the shore of our ignorance.
    130. Re:This is new?! by SparkleMotion88 · · Score: 1

      If we want efficient code, we have to figure out ways to reward the programmers that write it. I don't see any sign that people anywhere are interested in doing this. Anyone have suggestions for how it might be done?

      "Efficiency" is accomplished by including some software requirements involving time, memory/disk usage, etc. If nobody is interested in doing this, then that means it isn't important to the project. There are some large classes of projects (e.g. embedded systems, real-time systems) that always these performance requirements, because they are important.

      Keep in mind that efficiency isn't the only desirable property of software. If I am tasked with implementing some new functionality, and I don't have any documented performance requirements, I will write code in a way that maximizes maintainability at the expense of performance. Maintainability is another valuable property and it is often at odds with efficiency.

    131. Re:This is new?! by IamTheRealMike · · Score: 1

      I'm all for citations, but in this case you could have just found it yourself: Dalvik VM internals.

      The VM itself is relatively small compared to the rest of the code on the system. I agree it's not obviously intuitive or correct, and I didn't design it. Just repeating what the designers said about why it is like it is.

    132. Re:This is new?! by Aceticon · · Score: 1

      I guess it's up to MS to make a easy to use idiot-proof threaded framework for crappy programmers to use.

      Good luck with that!

      I do software design and development mostly with Java (which has built-in multithreading from the ground-up which is reasonably idiot-proof) and can tell you that most Java Programmers don't really understand how to create programs which are not prone to dealdlocks and critical-race conditions in a multi-threaded environment. In fact, plenty of them, when using standard frameworks (i.e. J2EE) are not even aware that their code is being used in a multi-threaded way. This is probably related to how simple Sun has made Multi-threading look-like in Java.

      In fact, I've actually done a lot of interviewing for Senior Designer/Developer types and the area in which most candidates were likelly to be weak on was Multi-threading.

      A Multi-threading implementation is by necessity a tradeoff between performance and simplicity:
      - When it's too simple you tend to end up with huge blocks of code which are single-threaded (because less experience developers will use the buil-in features in a coarse manner without really understanding what they do)
      - When it's too complex it rarelly gets used at all.

    133. Re:This is new?! by Anonymous Coward · · Score: 0

      "Further more many things that work on Android do not work on Iphone, slashdot for instance works fine on my HTC Dream or newer Motorola Milestone with the standard browser..."

      Slashdot works for my needs on my first gen iPhone. Where there other better examples or is this the best you've got?

      "Not to mention that both the Milestone and Nexus One can do more as well as lack the restrictions of the Iphone."

      Perhaps they do more of what you need, but possibly your needs are not the same as others?

      "Apple's operating systems are not very well optimised, not even as much as Windows operating systems, Apple's OS pretend to have optimisation by providing the OS with more hardware then it needs and limiting functionality to prevent any perceived loss of speed."

      Citation needed!

      "Most people using a Mac or Iphone rarely use the full power of the hardware, ergo an un-optimised OS goes unnoticed by the user."

      Citation needed!

      "OSX provides this very shiny button but only in a few select places, Windows provides this not so shiny button almost everywhere. This is why Windows is still the number one OS on the planet."

      What are you even talking about? You should do some research on the underpinnings of OS X in relation to its BSD heritage. If this is your best argument for why Windows is still the number on OS on the planet you look like the biased one who is incapable of objective comparisons.

    134. Re:This is new?! by anonymousbob22 · · Score: 1

      People still run windows on servers?!?

    135. Re:This is new?! by JamesP · · Score: 1

      One is that ARM native code is bigger, size-wise, than Dalvik VM bytecode.

      Citation needed. Dalvik is better than baseline Java bytecode, agreed. But so is ARM native code. [http://portal.acm.org/citation.cfm?

      Every assembler instruction in ARM is 4 bytes. Except when you use Thumb mode, then it's 2 bytes but I don't think they use that.

      As opposed to x86 where it takes from 1/2 bytes up to 8 (or even more IIRC) bytes.

      And those are RISC instructions in arm so you need more of them to do what you want. For example, no operating directly into memory except with a load/store.

      You can do in one instruction in x86 what you'd need 3/4 ARM instructions.

      By the way, that's one of the reasons why you can have a 800Mhz ARM processor in your cell phone.

      (PPC asm is kind in between x86/arm, BTW)

      --
      how long until /. fixes commenting on Chrome?
    136. Re:This is new?! by hey! · · Score: 1

      In my experience coders who try to write fast code fail.

      I recently delivered a small pro-bono update to a piece of software for some field biologists. They were amazed that one of the processes that had formerly taken forty five minutes now took about fifteen seconds. They asked me what I did, and I said, "I removed the optimizations."

      That wasn't entirely true. What I did was I through out an unmaintainable mess of code and replaced it with something simple. But the mess came about because the original developer had been paranoid about speed. He organized the entire code around one avoiding several performance issues that he feared without any empirical evidence they would be measurable problems. The result was so complex that he was unable to consolidate a handful of heavyweight operations that were performed thousands and thousands of times. He tried object pooling, which added complexity and bugs while only obtaining marginal speed improvements. What he needed was a simple algorithmic improvement that was impossible without ripping the whole mess apart.

      A programmer's first priority should be to write a solution that is clear and correct, and then if there is a problem you do one of two things. You tweak the inevitable 5% of the code that takes 95% of the time, and if that doesn't work you create an entirely new clear, correct abstraction for the problem that algorithmically tackles the worst case. You try to trade off space for time and that sort of thing. If that doesn't work, you look at some kind of dynamic programming or, I suppose, parallel programming. Anything that can utilize slack computational resources.

      But it all comes down to clarity. The reason to write simple, effective code is that it is more likely to be correct and it is more likely to be maintainable. It's also very commonly easy to make faster. The key is abstraction. You "search a list", not "initialize an index variable to an array and loop over increasing values of the array until the termination conditions are obtained." The abstraction is not only easier to read and understand, it gives you a wall behind which you can make speed improvements in the unlikely case that is necessary. Such unlikely cases occur all the time; it's that proverbial 5% of the code. That means you get nearly all the possible speed improvements for 1/20 of the cost.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    137. Re:This is new?! by drinkypoo · · Score: 1

      If you phone runs a little less efficient then no one gives a damn.

      Totally false. Inefficient cellphones are larger and/or have poor battery life than efficient ones.

      They want to make their phones easy to program for, which generally conflicts with efficiency.

      Completely true. This is why most cellphones are lousy.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    138. Re:This is new?! by greed · · Score: 2, Interesting

      Still, one could hope that people learned from Apple's experience with the Classic VM inside OS X.

      The one thing I don't like from the transition is how Carbon/Classic :-separated paths are still hanging around in some interfaces.

      But between Classic.app on OS X, Cygwin on Windows, and WINE on anything POSIX-ish (source API compatibility, not binary), there's plenty of work out there to serve as a template.

      None of which Microsoft can use, I guess, because it's either Apple's or (L)GPLed.

    139. Re:This is new?! by phision · · Score: 1

      From what I recall he then went on to work at FPS systems

      I didn't know the First Person Shooter systems were that old ;)

    140. Re:This is new?! by Anonymous Coward · · Score: 0

      Hes refering to non-specialized systems designed around multicore.

      All the OSes out there work on multicore but basically in the same way they worked on single core. They just toss a few threads or execute services on a different core for load balancing type work. What he is saying is that current OS design is still using the same idea as single core design used. To really harness the power offered in a multicore chip that we need to basically rethink the entire OS from the ground up without a thought of how an older OS fixed problem XYZ. To literally recreate the OS from complete scratch, not a revision to the Linux kernal or to the Windows kernal which at their lowest level were created around single core paradigm.

    141. Re:This is new?! by DCFusor · · Score: 1

      Yeah, the way it *is* done at middle volume (mere millions) embedded shops. I wrote code for things like PA systems, embedded PBXs and voice over IP (lan at the time) for many years. Myself and the people working for me made *very* good money for writing efficient code. We are all retired, and still young. This came about because of the value to this type of customer. If you can write better code (which includes system and hardware design at the limit), then they save bucks per unit on everything from CPU, ram and so on, to square inches of PCB and in millions, that adds up quick for the customer of the code, in this case a hardware manufacturer. I recall being told that the CEO of a company we worked for once went down the hall chortling that investing in my outfit for coding and systems design was the best move he'd ever made. For a mere few hundred K$ (which we earned in an astonishingly short time, like a month or a little more), we did him a product that made many millions in one year, much of that in pure hardware savings over the older design. So, it happens. It's not as likely in mass market product like cel phones, as we were able to do this partly by locking down most of the feature set -- if someone became aware that our hardware even had software in it -- we'd messed up. Things like phone exchanges don't have reset buttons or power switches, they're just supposed to work, period. For one customer, the need of a reset was considered a failure requiring a service call. So the emphasis was on the 9's first, then hardware cost -- good code addresses both! It does really help that we wrote our own opsys for all this, purpose-designed for realtime multitasking for a limited number of apps. Having had to use a bloated commercial system (for which developers and tools were more common) would have easily wiped out all those gains. We were doing in a 10 mhz PIC microprocessor what others needed a full boat board running windows CE had trouble doing. That's where the money/value to our customers came in.

      --
      Why guess when you can know? Measure!
    142. Re:This is new?! by nine-times · · Score: 2, Interesting

      Well it's my understanding that Carbon simply wasn't supposed to stick around this long. Cocoa was supposed to replace it, but there were some major developers (e.g. Adobe and Microsoft) who refused to transition.

      There was even a dust up in the last year or so when 10.6 was released, and Apple made it clear that they weren't ever going to update Carbon to support 64-bit applications. Adobe pretty much flipped out, and is only now working on migrating over to Cocoa in CS5. Microsoft is finally releasing a Cocoa version of Office in 2010.

      So in essence, we're 10 years out and the transition from OS9 still isn't done.

      Don't get me wrong-- in the past 10 years, Apple has transitioned to an entirely new OS and a different chip architecture (PowerPC->x86), and overall both transitions went fine. I still wouldn't want to keep doing it every couple of years.

    143. Re:This is new?! by juasko · · Score: 1

      Hey, your biased, technically your right but practically wrong. The lame fact is my wifes iPhone does more than any other phone I have. And yes I'm atm wondering about an andrioid but it still can't compete with the iPhone. And that is with an un jailbroken iPhone fully standard. Compared so far with Nokia N900, E71 and friends Andrioid here. Sorry to say even if the iPhone has been handikapped with stupid restictions, it still does more! (there are good restrictions too as only tough AppStore, I hope Nokia, Google, MS. Copy that type of restrictions).

    144. Re:This is new?! by hazydave · · Score: 1

      Don't believe the rumors on the net -- there most certainly is a GPU in the Nexus One.

      The Nexus One is based around the Qualcomm QSD8250 SOC, which does in fact includes the AMD/ATi Z430 (Qualcomm bought AMD's mobile graphics division), versus the PowerVR SGX used on the Droid and iPhone 3GS and pretty much every other modern smart phone, as well as bunch of the netbooks (Intel licenses a higher-end version, for example). Qualcomm claims "up to 22M triangles/sec and 133M 3D pixels/sec". Actual benchmarks put the Droid GPU at around 18.5M triangles and about 662M pixels per second... there's your weak link. The Nexus One's CPU is nearly twice the speed (1GHz vs. 550MHz), but the 3D's definitely going to suffer.

      Without any GPU, you'd be waiting around for 3D to occur, frame by frame. Ok, maybe not quite so bad, but it would be bad. And bad on power, too... general purpose CPU cycles take far more power doing graphics than application-specific GPU hardware.

      The iPhone 3GS may do a bit better still, all things considered. It's got a similar GPU to the Droid's, but of course, only 37% of the pixels to paint for any given frame. And the 3GS is usually programmed in native code (compiled Objective-C), which includes use of the ARM Cortex A8's NEON SIMD instructions. The Android NDK allows use of native instructions, but so far, no support for NEON.

      --
      -Dave Haynie
    145. Re:This is new?! by steelfood · · Score: 2, Insightful

      MS did the same during the transition to 32-bit. They included a 16-bit DOS emulator and had it run transparently. They did the same for the transition to 64-bit. It was so successful and so transparent a lot of IT professionals didn't even know it was even happening in the background.

      Unlike Apple though, they never removed it. Sure, it resulted in a major security hole, but it also let legacy custom business apps run far longer than they otherwise would have been able to.

      I suspect if they were ever to make another large transition, they'd do the same thing they've been doing for years.

      --
      "If a nation expects to be ignorant and free in a state of civilization, it expects what never was and never will be."
    146. Re:This is new?! by Jeppe+Salvesen · · Score: 1

      Mind you, they keep improving the libraries. And they keep adding stuff like Grand Central Dispatch. Is an OS just the kernel, or do you consider the default shipping libraries as part of the OS? Do you use Linux, or GNU/Linux?

      --

      Stop the brainwash

    147. Re:This is new?! by Anonymous Coward · · Score: 0

      Huh...I've mostly lived ALONG space....

    148. Re:This is new?! by PingPongBoy · · Score: 1

      Why has it taken so long for the OS designers to get with the program?

      Coming up with a new OS paradigm is hard, but doable.

      Coming up with a viable new OS that uses that paradigm is much harder; because even once the new OS is working perfectly, you still have to somehow make it compatible with the zillions of existing applications

      Sounds obvious, but the OS designers may be ahead of you. An OS designer should throw the problem back to the hardware people: "I don't want to know how the CPU handles the different threads, just put the threads where they would run best, unless I explicitly want control."

      After all, why should every hardware advancement require a rework of the software? Come on, Intel, if I just compile a program can you give me the whole CPU, not just one core, even if I don't explicitly code in multithreading????

      --
      Know your pads. One time pad: good for cryptography. Two timing pad: where to take your mistress.
    149. Re:This is new?! by exomondo · · Score: 1

      Umm, no.

      I'm fairly sure it is, shared-objects are basically a singleton pattern implementation.

      He's talking about the Distributed Objects mechanism, which depends on some features of the Objective-C runtime and the Foundation framework. It comes from NeXT and there's been a working GNUstep implementation for about 15 years too. It allows you to publish an object and then send it messages from another process (optionally on another machine) in exactly the same way that you would with a local object. It's very powerful; you can decompose a large program into several processes using it and have them communicate transparently.

      Ah yes, well that still isn't a concurrency solution though, shared mutable state is what makes parallel processing difficult. Distributed objects is a similar concept to DCOM, certainly not game-changing in terms of OS concurrency.

    150. Re:This is new?! by exomondo · · Score: 1

      Very little helps with concurrency problems. Ease of communication and setting up threads and processes is important as well.

      Which would be GCD on OSX (snow leopard) or TPL & PLINQ for .Net, PPL for Windows Native apps (which sits between full thread control and a more declarative model like that used in OpenMP) and the higher level cross-platform OpenMP.

      I think it's actually distributed objects, not shared.

      In that case the windows version would be DCOM.

    151. Re:This is new?! by ceoyoyo · · Score: 1

      Sigh. Go back to the beginning (or near the beginning) of the thread you replied to. The post I replied to said:

      "Apple are doing a lot of good, as you mention, with things like Grand Central Dispatch, but the multiprocessing features in earlier versions of OS X, and even more OS 9, were nothing that was in any major way any better than that offered by, say, Windows or other Unix based OSs"

      Note "earlier version of OS X" i.e., those without GCD.

      I've never used DCOM, but it's supposed to be a simple extension of COM and there's a big difference in usability between COM and the NeXt distributed objects.

    152. Re:This is new?! by Anonymous Coward · · Score: 0

      > that's not exactly an apples to apples comparison.

      Of course not! It's an apples to androids comparison.

    153. Re:This is new?! by exomondo · · Score: 1

      Sigh.

      ?

      Note "earlier version of OS X" i.e., those without GCD.

      I've never used DCOM, but it's supposed to be a simple extension of COM and there's a big difference in usability between COM and the NeXt distributed objects.

      Yes i agree in terms of usability distributed objects were easier than DCOM, or even CORBA, but the tying to the Obj-C runtime back when Obj-C wasn't very popular is what caused next's implementation of distributed objects to not have much of an impact and not be seen as any better than DCOM or CORBA. Ease of use is one thing, domain of use is another.

    154. Re:This is new?! by jc42 · · Score: 1

      Of course, you can do a bit more computing with 8 Q-bits than you can with 8 of the more mundane bits that the rest of us are using.

      ... only if it is attached to a server farm to find the real answer from the combinatorial mess produced by the Q

      Well, yeah, but that's the same situation with most "computers". I like to point out to users that the actual "computer" is just the CPU chip plus a few memory chips in the middle of one board in their box. The rest is all interface stuff so that the computer can get electricity and information from the outside world, and send back the results of the computations. The interface stuff is often several thousand times as big as the actual computer.

      We can expect that it'll be the same with quantum computers. A single Q-bit requires quite a bit of surrounding support structure to work at all. Decoding the mess produced by the "computation" requires additional support from conventional computers. Whether it's worthwhile, we have yet to see.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    155. Re:This is new?! by alexandre_ganso · · Score: 1

      So, why did they release Snow Leopard with nothing visually new, but only efficiency improvements?

    156. Re:This is new?! by Khyber · · Score: 1

      Only efficiency improvements? Did you even bother reading the changelog and fixlist? You'd better read that again.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    157. Re:This is new?! by mjwx · · Score: 1

      Well, I sit corrected.

      --
      Calling someone a "hater" only means you can not rationally rebut their argument.
    158. Re:This is new?! by mjwx · · Score: 1

      Hey, your biased, technically your right but practically wrong.

      Care to prove it?

      Google, the OHA and Android manufacturers are not pursuing the same hype storm type marketing as Apple, rather they are slowly building up, both sales and support networks. If you need a comparison, try reading the Tortoise and the Hare.

      The lame fact

      Yes your fact is lame, on that matter it isn't much of a fact.

      Sorry to say even if the iPhone has been handikapped with stupid restictions, it still does more!

      Third party mail clients, runs applications in the background, can install software from the internet, oh yes, it still does more if you're living in bizarro universe. Would you care to back up your baseless assertions with actual facts.

      there are good restrictions too as only tough AppStore

      So, banning developers for criticising your store is a good thing, revoking applications for mentioning the competition is a good thing, rejecting any application with an "i" Name (droid or N name) is a good thing, removing all bikini applications except for brand names is a good thing. I cant possibly fathom why Google or Nokia would want this kind of restrictions, they like their customers and treat them with a modicum of respect.

      And you think I'm biased.

      In the US, the Google Nexus one unlocked is US$520 from Google,
      The Motorola Milestone is US$525 from Expansys USA
      Apple only just released their Iphone unlocked from the Apple Store, the 16 GB version is US$599.

      So how is Apple competing on price and functionality, it seems the only way Apple is competing is in marketing.

      --
      Calling someone a "hater" only means you can not rationally rebut their argument.
    159. Re:This is new?! by Anonymous Coward · · Score: 0

      Arm is ONLY good for low power, deterministic low latency calculations. Great for hand-helds.

      Intel i7 44.727 instruction per cycle average, divide by 4 cores is still over 11 per cycle (3.3ghz i7 147,600 MIPS)

      ARM's BEST cpu is 2/cycle (1ghz ARM Cortex A8 2,000 MIPS)
      (http://en.wikipedia.org/wiki/Instructions_per_second)

      The i7 isn't "better" by any means. They both have different targets, low power vs multimedia.

      And don't say "but the ARM cores are smaller so you can have more".. Bah. Do you know what kind of overhead there would be in thread locking with that many cores? GPUs are built MUCH differently and the same ideas don't apply to CPUs.Still better off having fewer fast cores than a ton of slow cores, until architecture catches up and we find a decent way of locking/syncing.

    160. Re:This is new?! by kscguru · · Score: 1

      We know how to take advantage of parallel processing...it's an approach that does away with side effects called functional programming (see Erlang, Haskell, etc).

      Erlang and Haskell are great ways to harness the power of parallel processors. The problem is that they don't work - they aren't easy to use to build large-scale applications. State of the art Computer Science knows how to enable one or two really bright programmers write good parallel code, but those bright programmers could have written equally good code in C. We do NOT know how to get a hundred mediocre programmers to write good parallel code - whether in C, Erlang, or Haskell.

      --

      A witty [sig] proves nothing. --Voltaire

    161. Re:This is new?! by julesh · · Score: 1

      Every assembler instruction in ARM is 4 bytes. Except when you use Thumb mode, then it's 2 bytes but I don't think they use that.

      Any app developer can use thumb if they prefer; you set a bit in your jump/call instructions to specify whether the code you're jumping to is thumb or normal.

      As opposed to x86 where it takes from 1/2 bytes up to 8 (or even more IIRC) bytes

      Up to 15 bytes.

      And those are RISC instructions in arm so you need more of them to do what you want. For example, no operating directly into memory except with a load/store.

      You can do in one instruction in x86 what you'd need 3/4 ARM instructions.

      Potentially. However, *most* instructions in most programs are on a 1-1 mapping. I think you end up with about 20% more instructions overall.

    162. Re:This is new?! by severoon · · Score: 1

      This simply isn't true. Unless you're transcoding lots of videos all day, nearly all the time you sit waiting for your computer to do something--anything--your HD light is on. I guar-an-tee it. The only use cases I can think of where performance is bottlenecked by memory or video or CPU and not HD, besides transcoding lots of video, result in degraded experience, but not waiting by the end user. Think about first person shooters--the graphics in the original Doom were not great compared to the FPS today--but you didn't have to sit there waiting for the environment to load when you entered a new room even then, did ya?

      --
      but have you considered the following argument: shut up.
    163. Re:This is new?! by severoon · · Score: 1

      Pop open your task manager and look at the CPU graph. What percentage of the time you spend sitting at your machine is the CPU pegged at 100%? Not 99%, 100%? Uh huh...thought so.

      --
      but have you considered the following argument: shut up.
    164. Re:This is new?! by severoon · · Score: 1

      I don't necessarily think that writing in those languages specifically is the answer--but they do represent that we have the know-how, and it's a simple matter of applying it. Look at Google App Engine--you can't easily build an app on GAE that doesn't scale. It's just part of working in that environment.

      --
      but have you considered the following argument: shut up.
    165. Re:This is new?! by NelsChristian · · Score: 1
      It's the reason for Henry Petroski's famous remark that "The most amazing achievement of the computer software industry is its continuing cancellation of the steady and staggering gains made by the computer hardware industry."

      Hmm.. Just maybe that extra cycle time might now be spent doing something constructive that we did not do when cycle time was dear? Sending and receiving email used to be quite cheap. But add in cryptographic signatures (rfc 4871) and the cycle time spent on one piece of mail goes up an order of magnitude.

      The software industry would be derelict if it didn't try to find something useful and profitable to do with the extra cycles granted it. Well, I suppose there are exceptions. I find youtube.com to be useful, even if Google doesn't find it profitable.

    166. Re:This is new?! by maxwell+demon · · Score: 1

      This simply isn't true. Unless you're transcoding lots of videos all day, nearly all the time you sit waiting for your computer to do something--anything--your HD light is on. I guar-an-tee it.

      Actually not. Most of the time I'm waiting for something, the CPU is at 100% and the disk sits idle. That's either because of some calculation, or because of some heavy JavaScript like Slashdot's. If the waiting isn't because of the CPU, it's almost always waiting for the network.

      But then, even when the disk is the bottleneck, it's usually not virtual memory swapping in and out, but specifically programs reading/writing many or large files. I keep my statement: If your bottleneck is swapping, the fix is to use more memory or possibly less bloated apps. If your bottleneck is other disk I/O, then an SSD may help, of course.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    167. Re:This is new?! by Anonymous Coward · · Score: 0

      what is happening today is that people start launching more programs in parallel, plus they launch background tasks such as editing the HD video from their shiny new camera.

      So what happens is that 2 or 4GB of ram becomes not enough, the OS pages memory with disk.

      Disk access today is a big bottleneck. SSD may improve the situation, larger memory sizes may improve things too.

      Also, educating users would be good too. I.e. if you have a 2GB system, don't run something on it that needs 3GB

    168. Re:This is new?! by severoon · · Score: 1

      Using Chrome, I just popped every article on the /. main page into a new tab as quickly as I could while using the task manager. CPU never touched 100%. The highest it got was 60-odd% (I suspect this is because Chrome was requiring all of the overhead of allocating a new process to each task.... Networking, on the other hand, was pegged for much of my wait time. (In FF, the same test never broke 30% CPU...still pegged the network though.) All the while I have 2.35GB of 4GB physical RAM in use, 64-bit OS means that it's a long way away from the per-process limit.

      Granted none of this is scientific, so let's think up a real use case that you'd think would be CPU or memory limited. How about Photoshop?

      As luck would have it, I just built myself a serious honking PS workhorse of a machine. I attended a meetup last year at Adobe HQ on just this topic. The main takeaway from that talk by Adobe performance engineers? After you have a certain amount of memory required for your Photoshop use cases, adding more doesn't help. If you have a reasonable CPU, getting a faster one results in exactly 0% performance improvement. If you have a video card that supports all the latest features that PS CS4 leverages, beefing it up will add marginal improvements to your experience (unless you're doing a lot of hi-res images, running computationally complex filters like lens blur, or rendering a lot of complex 3D scenes, or doing a lot of video work).

      So what can you do at that point to improve performance? Put it on a RAID-0 array, over as many disks as you can until you max out the bus bandwidth between your motherboard and your RAID controller card.

      So I'm not saying that there are no use cases out there for which memory and CPU matter. I'm saying that for 99% of what Joe User does, the HD or the network is the bottleneck.

      --
      but have you considered the following argument: shut up.
    169. Re:This is new?! by maxwell+demon · · Score: 1

      So I'm not saying that there are no use cases out there for which memory and CPU matter. I'm saying that for 99% of what Joe User does, the HD or the network is the bottleneck.

      That's not what you said. You said (emphasis added by me):

      The bottleneck is not your CPU--it's virtual memory swapping in and out.

      If adding more memory doesn't change it, it's obviously not virtual memory swapping in and out. As I already said: If your bottleneck is other disk I/O, then an SSD may help, of course.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    170. Re:This is new?! by lucian1900 · · Score: 1

      Then again, an even better language (Python/Ruby) with a JIT would've netted smaller apps and about the same memory usage and performance. The choice of Java mostly had to do with popularity and tool maturity.

  2. waiting by mirix · · Score: 5, Insightful

    'Why should you ever, with all this parallel hardware, ever be waiting for your computer?'

    Because I/O is always going to be slow.

    --
    Sent from my PDP-11
    1. Re:waiting by DavidRawling · · Score: 4, Insightful

      Well, with the rise of the SSD, that's no longer as much of a problem. Case in point - I built a system on the weekend with a 40GB Intel SSD. Pretty much the cheapest "known-good" SSD I could get my hands on (ie TRIM support, good controller) at AUD $172, roughly the price of a 1.5TB spinning rust store - and the system only needs 22GB including apps.

      Windows boots from end of POST in about 5 seconds. 5 seconds is not even enough for the TV to turn on (it's a Media Center box). Logon is instant. App start is nigh-on instant (I've never seen Explorer appear seemingly before the Win+E key is released). This is the fastest box I've ever seen, and it's the most basic "value" processor Intel offer - the i3-530, on a cheap Asrock board with cheap RAM (true, there's a slightly cheaper "bargain basement" CPU in the G6950 or something). The whole PC cost AUD800 from a reputable supplier, and I could have bought for $650 if I'd wanted to wait in line for an hour or get abused at the cheaper places.

      Now, Intel are aiming to saturate SATA-3 (600MBps) with the next generation(s) of SSD, or so I'm told. Based on what I've seen - it's achievable, at reasonable cost, and it's not only true for sequential read access. So if the IO bottleneck disappears - because the SSD can do 30K, 50K, 100K IO operations per second? Yeah, I think it's reasonable to ask why we wait for the computer.

      Not that I think a redesign is necessary for the current architectures - Windows, BSD, Linux all scale nicely to at least 8 or 16 logical CPUs in the server world, so the 4, 6 or 8 on the desktop isn't a huge problem. But in 5 years when we have 32 CPUs on the desktop? Maybe. Or maybe we'll just be using the same apps that only need 1 CPU most of the time, and using the other 20 CPUs for real-time stuff (Real voice control? Motion control and recognition?)

    2. Re:waiting by Jimbookis · · Score: 2, Insightful

      Nature abhors a vacuum. It seems that no matter how much compute power you have something will always want to snaffle it up. I have a dual PentiumD at work running WinXP and 3GB of RAM. The proprietary 8051 compiler toolset god awful slow (and pegs one of the CPUs) compiling even just a few thousands of lines of code (10's of seconds with lots of GUI seizures) because I think for some reason the compiler and IDE are running a crapload of inefficient python in the backend. Don't even get me started on how long it takes to upload the frickin' binary to the target on JTAG. My debug cycles take far too long. My point is the compilation of my code base should be done literally in the blink of an eye but the developers saw fit to use a framework that depends on brute CPU power to do relatively simple stuff. A colleague writes VB.net apps to and sometimes it's like being back in 1989 watching .net draw all the elements of the GUI on the screen when you open it or change tabs. Fsck knows how this has come to pass in 2010 and why it's acceptable. So really, blame the programmers for making your beast of a PC slow and waiting around. This notion of massive language abstraction and wanting to use scripting languages ('coz it's easier, apparently) and just-in-time this and that is what is slowing computers down. And hard disks. '

    3. Re:waiting by feepness · · Score: 0, Troll

      (I've never seen Explorer appear seemingly before the Win+E key is released).

      And I soooo wanted to give your post geek creed... :(

    4. Re:waiting by KibibyteBrain · · Score: 1

      But that's exactly the way changing OS architectures and APIs can help. Right now the default behavior is to start a worker thread of some type that blocks on IO requests and then reports back. Most apps in the wild don't even bloody do this and just have a few threads do everything and some even have the main app loop block on IO.(let's all pretend we don't see our app windows grey out several times a day!)
      We've argued for decades this was a programmer issue but that sort of pedantic criticism has accomplished nothing. Arguing that if all programmers were as smart as you we'd have no problems has been a bad attitude from the OS folks.

      Maybe its time we abandoned the current basic Win32/stdlib type APIs for ones that were more IO friendly so that the easiest and most lazy-friendly way to write code is also the best practice for parallelism, and not the other way around which has failed miserably.

    5. Re:waiting by InsurrctionConsltant · · Score: 1

      Maybe its time ... the easiest and most lazy-friendly way to write code is also the best practice for parallelism.

      Bingo.

    6. Re:waiting by WhatAmIDoingHere · · Score: 1

      You realize he's talking about Windows Explorer and not Internet Explorer, right?

      --
      Not a Twitter sockpuppet... but I wish I was.
    7. Re:waiting by EvilIdler · · Score: 1

      But why should we ever wait for the computer to pop up some indicator that it is doing some I/O, and what sort? One of the most common things I see people frustrated with is that the cursor goes into hourglass mode (and the program not updating its display) without knowing why. They yell that the computer is slow, and want a new one. The old one might not even be loaded with malware, and the program they were using keeps doing it on the new computer.

      Like others have suggested, something like Apple's GCD would help. Any self-contained task which can be split off into its own thread will, with very little code around it. Fork off that document opening, and return to the main program showing a list of tasks it initiated.

    8. Re:waiting by tagno25 · · Score: 1

      Not that I think a redesign is necessary for the current architectures - Windows, BSD, Linux all scale nicely to at least 8 or 16 logical CPUs in the server world, so the 4, 6 or 8 on the desktop isn't a huge problem. But in 5 years when we have 32 CPUs on the desktop?

      IIRC, Linux can scale up to 256 AMD CPUs or 32 Intel CPUs and 1024 CPUs in a cluster (possibly more by now)

    9. Re:waiting by Anonymous Coward · · Score: 0

      I hope you don't write to that disk very much or you'll be reinstalling it in about a month.

    10. Re:waiting by Anonymous Coward · · Score: 0

      Safe! That was close.

    11. Re:waiting by Anonymous Coward · · Score: 0

      Where did you find an Intel SSD for $175 AUD?

    12. Re:waiting by toastar · · Score: 1

      i3-530
      40Gb ssd

      You just described my new laptop.

      My workstation's a X5550 with a real hard drive(15k)

      I only wish i could find a i7 MB with a Sas controller, I may have to buy a used one :(

    13. Re:waiting by timmarhy · · Score: 1

      it's not hard to do this now under windows api's. it's just that no one does. maybe if university comp sci and IT degree's joined the 21st century you'd have more graduates that knew this.

      --
      If you mod me down, I will become more powerful than you can imagine....
    14. Re:waiting by lennier · · Score: 1

      That's my big worry with SSDs at the moment. How long is their useful write-cycle life compared to good old magnetic HD?

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    15. Re:waiting by Spikeles · · Score: 1

      Oh geez i dunno.. maybe alot of places?

      --
      I don't need to test my programs.. I have an error correcting modem.
    16. Re:waiting by Anonymous Coward · · Score: 0

      ummm no. There is no excuse for I/O to be slower than human interface. The human should always be the slowest component and 'bottleneck' in any automated system. The fact that they aren't, with today's processing in the 2,000,000,000 cycles per second for a single core is caused by nothing more than ridiculous bloat in operating system, and criminal bloat in applications. Memory bloat, instruction bloat, parser bloat. Back in the 1960's they accomplished great things with vaccuum tubes.

      Hearing people whine about 'not having the resoures' makes me want to drop an old-school mainframe drive-case on their head (55lbs of cast iron).

      Yes, we have and will continue to have faster processors and more memory.
      Sure, being sloppy is 'easier'.
      But inefficiency is sloppy, wasteful, and no excuse for poorly performing software.
      "easy-to-learn" languages have made programming 'accessible' to millions of people....
      but most of what they produce is crap that is less than useless. It is counterproductive.

    17. Re:waiting by feepness · · Score: 1

      I was actually just trying to make a joke.

    18. Re:waiting by DavidRawling · · Score: 2, Informative

      Yes, as does Windows. I think I should have been more clear - the scale curve is nice and flat up to 8, 16, maybe 32 logical CPUs. After that though, doubling CPUs doesn't necessarily double performance (even in heavy compute) - other bottlenecks start to impact, as does scheduler performance and architecture.

    19. Re:waiting by hitmark · · Score: 1

      question, how much of the interaction between computer and person is IO based?

      most, no?

      and no matter how much we talk about teens multitasking more now then ever, most of us are single taskers. At best the tv or radio running in the background act as a IRQ like system, where if a certain sound shows up, we shift focus from the computer to the other box.

      Heck i may go as far as to say that the "supposed" multi tasking we see in teens, music while studying, is more white noise then multitasking. That the music is there to mask out any audio distractions rather then as a full task on its own.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    20. Re:waiting by icebraining · · Score: 0

      Intel X25-M and X18-M SSD drives: 1.2 million hours Mean Time Before Failure (MTBF)

      Western Digital Caviar Blue Sata drives: 750 thousands hours MTBF.

      Seems pretty good to me.

    21. Re:waiting by hitmark · · Score: 1

      and heck, even 8 cores become "wasteful" on a home desktop, no? How many of the tasks seen in a task manager are actually active at any given time? And how many of them are sleeping, awaiting a specific set of conditions?

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    22. Re:waiting by icebraining · · Score: 1

      And yet here you are in Slashdot, which is written in Perl.

      And the "easy to use" languages are not because their easier, it's because they're more productive, and hardware is cheaper than developer time.

      If programmer A get paid $80/hour, and take 6 hours to develop an app in C, and the other guy takes 4 hours to write it in Java but needs a CPU $100 more expensive, can you tell me which one is cheaper?

    23. Re:waiting by hitmark · · Score: 1

      on question should be, did the program trigger the IO based on user input? if so, going back to the user would be basically pointless if the user cant continue to do what he was doing until the IO requested have been performed anyways.

      now, if the whole os interface freezes because of one IO action from one program, thats a whole different story. Especially if said program was one triggered from a timer, or some other condition, while the user was doing something else entirely.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    24. Re:waiting by BikeHelmet · · Score: 2, Insightful

      Seems pretty good to me.

      If true.

    25. Re:waiting by Anonymous Coward · · Score: 0

      Everybody thinks you are just talking about the disc. Problem is the bus, which has high bandwidth but is hampered by delays during context switching. More cores on the same bus make it worse. The other problem is RAM, which has not kept up. Lots of bandwidth but you have to take big gulps and wait for the refresh. Then there is the issue of contention.

      NT got a big perfromance boost with two CPUs. After two more, the performance started dropping. AMD may have a better approach with special purpose cores for things like video.

    26. Re:waiting by Anonymous Coward · · Score: 0

      and heck, even 8 cores become "wasteful" on a home desktop, no? How many of the tasks seen in a task manager are actually active at any given time?

      All of them

      And how many of them are sleeping, awaiting a specific set of conditions?

      None of them.

      Reason? F@H

    27. Re:waiting by Anonymous Coward · · Score: 0

      Ouch. I can't see Dell or HP putting cheap PC's on shelves with some note begging Joe User to try out "new" tech that holds only as much as a smartphone's memory cards, against my best hopes.

      The instant-on tech touted a year before Vista's launch is dead on arrival, without some mainstream adoption. The problem? people demand 600GB drives on PC's and won't grok getting less than 10% of what they understand they paid for.

      I am glad, though, that you have given me a chance to look again in 2 years, and I'll consider using the tech on a new build. I love speed without the overclocking.

    28. Re:waiting by Courageous · · Score: 4, Interesting

      Well, with the rise of the SSD, that's no longer as much of a problem.

      ORLY!

      Let's do some math shall we? Take a simple 4 core Nehalem running at 2.66Ghz. Let's conservatively assume that it can complete a mere *1* double precision floating point number per clock cycle, per core. So. How big is a double? 64 bits, or 8 bytes. Now, that's 2.66 billion * 4 = 10.64 BILLION doubles per second, which is 85 GB/s.

      The trick to understanding computing is that all computing really *is* at its heart a throughput problem.

      Do you see the asymmetry in throughput b/t the Nehalem and your SSD?

      C//

    29. Re:waiting by Airline_Sickness_Bag · · Score: 1

      Of course, MTBF != maximum number of write cycles for a SSD.

    30. Re:waiting by Anonymous Coward · · Score: 0

      Or maybe the vast amount of CPU power is being squandered by a crappy OS (I'm looking at you, Redmond). Most all are guilty of course, but Apple is doing remarkable things with multi-core. I don't even like their products, but credit where credit is due, dammit.

    31. Re:waiting by Anonymous Coward · · Score: 0

      wanting to use scripting languages ('coz it's easier, apparently)

      I thought the main reason for using scripting languages is not needing recompilation.

    32. Re:waiting by Anonymous Coward · · Score: 0

      The Web SQL standard deals with some similar issues (lazy web developers = things done in foreground and non-responsive GUI).
      They provide only asynchronous read and write operations, unless you do the work from a separate thread.

      It works fairly well in ECMAScript where it's easy to define the callback functions, though chaining a lot of callbacks can be a bit unwieldy.
      I think it'd be more of a deal in C, though, where callbacks require a bit more manual bookkeeping.

    33. Re:waiting by node+3 · · Score: 2, Insightful

      The question wasn't, "why should your CPU have to wait", it was, "why should *you* have to wait". At speeds approaching 3Gb/s, I think it's fair to say, at the person you replied to actually did say, "well, with the rise of the SSD, that's no longer as much of a problem."

      The trick to understanding computing is that all computing really *is* at its heart a throughput problem.

      The trick to understanding computers is to realize that all computing really is, at its heart, a human problem. It really doesn't matter if the CPU has to wait a trillion cycles in between receiving each byte of data, if the computer responds in an apparently instantaneous manner for the person using it, everything is working just fine.

      I only care abstractly about how long my CPU has to wait. I do care directly about how much I have to wait.

    34. Re:waiting by turing_m · · Score: 1

      and heck, even 8 cores become "wasteful" on a home desktop, no?

      It's not wasteful if each core can be power gated (e.g. Nehalem and newer processors) to use near-zero power when not in use, other than the one-time manufacturing cost which is insignificant compared to the energy consumed by the CPU in processing.

      --
      If I have seen further it is by stealing the Intellectual Property of giants.
    35. Re:waiting by Bigjeff5 · · Score: 1

      Holy cow, you just made the point of TFA (bottlenecks due to scheduler performance and architecture)!

      Nice!

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    36. Re:waiting by nemesisrocks · · Score: 1

      Linux can scale to 32 CPUs, but most applications can't.

      Most my my time "spent waiting" is for Firefox chugging through all the Javascript that bogs slashdot down...

    37. Re:waiting by drsmithy · · Score: 1

      I only wish i could find a i7 MB with a Sas controller, I may have to buy a used one :(

      Here.

    38. Re:waiting by Anonymous Coward · · Score: 0

      Sure... and you mistyped the smiley as a frown too, right? Douche.

    39. Re:waiting by feepness · · Score: 1

      I know what Win+E does and I suspect you might be the douche. And while I didn't mispell anything, if you're looking for typos, keys right next to each other are prime candidates.

    40. Re:waiting by Anonymous Coward · · Score: 0

      Ten years ago, a terabyte of any sort on a consumer machine was crazy. Twenty years ago, a gigabyte was crazy.

      By the time some fancy new OS really shows up (likely not in five years, since you wouldn't have usable drivers yet at that point - see nVidia and their crashy Vista drivers that's all better in Win7), you'll be working with larger storage and SSDs wouldn't be fast anymore.

    41. Re:waiting by timbo234 · · Score: 1

      Actually x86_64 Linux scales up to 255 CPUs at least:
      http://www.redhat.com/rhel/compare/

      And Redhat is using older kernels (with *some* new features backported), so more modern kernels might be even more.

      We have a 48-core machine here used as a VM host.

      --
      Pre-canned Evolution Links for all those Slashdot holy wars.
    42. Re:waiting by Anonymous Coward · · Score: 0

      Uh, "mere"? 1 dp memory access per cycle is pretty damn memory heavy algorithm. Something like for (i=0; imax; i++) arr1[i]*=arr2[i];

    43. Re:waiting by Anonymous Coward · · Score: 0

      Maths

    44. Re:waiting by BenoitRen · · Score: 1

      The problem isn't that I/O is slow. The problem is the x86 architecture with its interrupts that call for the CPU to wait for your hard drive(s) and your disc drive(s). The PowerPC architecture doesn't have problem.

    45. Re:waiting by robot256 · · Score: 1

      I have been running Win7 with an SSD for the last 8 months and I am never going back. You should actually read some recent literature on SSDs to answer this question. SSDs now advertise lifetimes comparable to or longer than magnetic disks, thanks to using very advanced firmware to do error correction and wear leveling. If there is an error in an SSD write, the drive will work around it and write to another sector (most drives have unreported capacity they use for this and wear leveling).

      The OCZ Vertex II, currently an industry favorite, advertises 1.5-million-hour mean time before failure. That means that the drives are estimated to last 171 years of normal use before failing outright. A Western Digital Caviar Black, on the other hand, is rated for 300,000 load/unload cycles, meaning you can spin it up and down 300,000 times. If you spin up and down 5 times a day, it will last 164 years, not counting possible degradation of the magnetic disk coating or mechanical failure due to shock or temperature extremes.

      Basically, SSDs are a pretty mature technology with reliability that meets or exceeds standard HDDs. In many applications, the vibration and temperature resistance of SSDs give them a significant advantage of HDDs. Just remember that you have to treat them differently from "dumb" HDDs--the SSD firmware automatically does all the defrag/wear leveling/error correction itself so trying to do that manually will kill the drive prematurely. File system alignment and RAID controller settings can be very important as well, so due diligence is required to use them properly.

    46. Re:waiting by xenn · · Score: 1

      Interesting, on most keyboards I've used the "(" and the ")" are in fact right next to each other.

      can't think of any that aren't in fact...?

    47. Re:waiting by cynyr · · Score: 1

      depends on your usage, a shot list of typical for me; re-encode/stream video files to my ps3, World of warcraft, rip/encode of a dvd, emerge (yep i run gentoo), some sort of flash based music player(pandora+chrome is 17%-20% cpu). Seeing as all of those are rather CPU bound, WoW need GPU and IO as well, I'd love a machine with 32cores or so. toss 1-2 at the streaming re-encode, 2 for wow, 8ish for the dvd rip/re-encode, and say 3 for chrome. so thats 14-15 cores before emerge. I can make emerge consume just about as many as i want. Granted i would need like 16GB of ram to keep all those core happy, and probably a raid of SSDs and a better controller, but thats life :).

      --
      All of the above was encrypted with a Quad ROT-13 method. Unauthorized decryption is in violation of the DMCA.
    48. Re:waiting by hitmark · · Score: 1

      sounds to me like you would be just as well of with a rack of computers and a kvm switch.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    49. Re:waiting by Courageous · · Score: 1

      Slashdot is HQ'd in the US, not in England, bub.

    50. Re:waiting by feepness · · Score: 1

      can't think of any that aren't in fact...?

      That was the point. I meant to make a silly frown, but it wasn't very clear or a very good joke to be honest.

      I am, in fact, a bad human being. :(

  3. Because by the+eric+conspiracy · · Score: 1

    Why should you ever, with all this parallel hardware, ever be waiting for your computer?' he asked.

    Because it might be waiting for I/O.

    1. Re:Because by Anonymous Coward · · Score: 3, Insightful

      Why should you ever, with all this parallel hardware, ever be waiting for your computer?' he asked.

      Because it might be waiting for I/O.

      That's no reason for the entire GUI to freeze on Windows when you insert a CD.

    2. Re:Because by toastar · · Score: 1

      That's no reason for the entire GUI to freeze on Windows when you insert a CD.

      lol, so true

    3. Re:Because by johnlcallaway · · Score: 1

      Ah .. someone finally with some insight....

      There is *ALWAYS* a bottleneck somewhere. Not enough CPU??? Throw more/faster CPUs at it. Oh crap .. now my memory is too slow. Ok .. fixed that. Now I need better disk throughput. Damn .. now the speed of light thing is slowing me down. Maybe if I build my computer in a circle to reduce the space between components.

      The questions isn't how to make it faster. It's is it fast enough. Yep .. I would love to install an SSD and boot up windows in 5 seconds. But I only do it once or twice a month, so I'm not willing to pay for it. I could buy faster memory, or 10Krpm disks. Or install a SAN of some type with fiber. Or better video cards.

      But in general, I'm content with what it is. And I know where to spend more money to make it faster if I want to.

      --
      I rarely read replies, it's my opinion and if you thought about your opinion a little more, I'm OK with that.
    4. Re:Because by the+eric+conspiracy · · Score: 1

      There is *ALWAYS* a bottleneck somewhere.

      I believe that's a theorem somewhere.

  4. I hate to say it, but... by bennomatic · · Score: 0, Troll

    ...I do a lot more waiting on my XP machine than on my Mac. Almost identical hardware, but when I'm opening an XLS file, Outlook and Word grind to a halt on the PC. Sometimes, closing a window locks up the whole system for 30 seconds. Shutting down takes an eternity, but the only thing worse than that is how slow the system gets after I leave it running for more than 4 days straight.

    My Mac, on the other hand, can stay running for months at a time, and maybe once a month I have to force quit an application. But even then, it's to access that application, not anything else.

    --
    The CB App. What's your 20?
    1. Re:I hate to say it, but... by Anonymous Coward · · Score: 1, Insightful

      I noticed the same on my mac. With a set of eight CPU graph meters in the menu bar, they're almost always evenly pitched anywhere from idle to 100%, with a few notable exceptions like second life, some photoshop filters, and firefox of all things.

      When booted into Win, more often than not I have two cores pegged high, and the others idle. Getting even use out of all cores is the exception, not the rule.

    2. Re:I hate to say it, but... by GIL_Dude · · Score: 4, Insightful

      Are you running a 9 year old version of OSX too, or are you comparing a two generation old Windows version to a nice new Mac version? It really sounds like you are comparing apples (snicker) to oranges. After all, both Vista and Windows 7 have no problem running for a long, long time between reboots and don't get slow during that time.

    3. Re:I hate to say it, but... by ceoyoyo · · Score: 1, Troll

      Starting out slow isn't really a solution to the "getting slow" problem.

    4. Re:I hate to say it, but... by Grem135 · · Score: 0, Insightful

      Wow, another Mac fanboy compairing his nice shiny new Mac to an outdated and replaced (2 times over) operating system. I bet he will say his Ipad will out perform a netbook too. Though the netbook can multitask, run virtually any windows app, has wifi, you can connect an external dvd and (gasp) it can be a color Ebook reader just like the ipad!!

    5. Re:I hate to say it, but... by Corporate+Troll · · Score: 1

      If it truly is almost identical hardware, I'd say that your XP installation has a problem.

    6. Re:I hate to say it, but... by drsmithy · · Score: 3, Interesting

      I noticed the same on my mac. With a set of eight CPU graph meters in the menu bar, they're almost always evenly pitched anywhere from idle to 100%, with a few notable exceptions like second life, some photoshop filters, and firefox of all things.
      When booted into Win, more often than not I have two cores pegged high, and the others idle. Getting even use out of all cores is the exception, not the rule.

      This is pretty much completely down to the application mix. Windows has no trouble whatsoever scheduling processes and threads to max out 8 (or 16, or whatever) CPUs, but if the applications are only coded to have, say, 1 or 2 "processing" threads, then there's nothing the OS can do to change that.

    7. Re:I hate to say it, but... by Bengie · · Score: 1

      Win7 almost never waits. Not sure why you're still using XP. Heck, with Win7, I can transfer 110MB/sec with SMB and play games just fine. No more of that "what's running in the background slowing me down". Kick off a defrag and go play, let a virus scanner run in the background. I can't wait to get an SSD, I just got some white label HD in my Dell comp.

    8. Re:I hate to say it, but... by MrHanky · · Score: 1

      Wrong. You don't hate to say it; as you posting history shows, you're an Apple fanboy. In actual fact, you posted that comment just to advertise how much better Mac OS X is than Windows was in 2001. I know this because that's all your comment does.

      It's a fucking ad.

    9. Re:I hate to say it, but... by DavidRawling · · Score: 1

      Further to this, Windows also does go to some lengths to avoid swapping a thread between CPUs unnecessarily - this supposedly helps ensure that the CPU cache is best utilised. Perhaps OSX is more liberal about where a thread runs when it has more CPUs than active threads?

    10. Re:I hate to say it, but... by Jane+Q.+Public · · Score: 1, Insightful

      That is simply not true. In fact, that is what Grand Central Dispatch (Snow Leopard, OS X 10.6) is all about. The OS handles the threads, not the programmer.

      Not only does it work, it is the wave of the future. Eventually, all machines and OSes will work that way because no programmer wants to jump through outrageous hoops to deal with 128 cores. Or even 4.

    11. Re:I hate to say it, but... by Aladrin · · Score: 1

      Well, I don't hate to say it.

      My work OSX computer is a lot more powerful than my home Windows computer and I spend a -lot- more time waiting on the OSX machine. In fact, Word and Excel are the apps I wait the most on.

      Rather than showing off a flaw in the OS, it probably points to things not being optimized.

      --
      "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
    12. Re:I hate to say it, but... by drsmithy · · Score: 1, Troll

      That is simply not true.

      It's very true. However, this:

      In fact, that is what Grand Central Dispatch (Snow Leopard, OS X 10.6) is all about. The OS handles the threads, not the programmer.

      Has nothing to do with what I wrote.

      Not only does it work, it is the wave of the future. Eventually, all machines and OSes will work that way because no programmer wants to jump through outrageous hoops to deal with 128 cores. Or even 4.

      The programmer still has to design his programs to do useful things with those threads. That was my point. The best scheduler in the world is useless when confronted with a single-threaded application (or one that is effectively so), or a non-parallelisable problem.

      Windows does just fine scheduling across multiple CPUs, has been doing it since before OS X even existed, and was designed from day 1 for it. It can't do anything about poorly written applications, however, and neither can any other OS.

    13. Re:I hate to say it, but... by bennomatic · · Score: 1

      Good points, all. I guess I should point out that the applications which seem to have the worst stalls, and which affect each other the worst are Outlook, Word, Excel, and IE. If one's locked, then I pretty much can't do anything with the others.

      --
      The CB App. What's your 20?
    14. Re:I hate to say it, but... by ceoyoyo · · Score: 2, Informative

      It doesn't make it as different as you seem to think.

      I think GCD is a great idea, and a very useful tool, but it's not a magic bullet. GCD can schedule some things more effectively because it has a system-wide view. The closure extensions and GCD interface makes it reasonably easy for novice programmers to get things actually running in parallel.

      Of the two, the latter has a MUCH bigger impact in terms of actually getting programs to take advantage of multiple cores. Actually sending

      BUT, it's nothing you can't do (and hasn't been done) with various multiprocessing libraries, many of which run on Windows, or with good old threads and processes if you've got a moderate level of skill. In order for it to work effectively the programmer still has to a) structure his program in such a way that the parallelism is exposed and b) actually use GCD.

      Contrary to what you seem to suggest, GCD does not really "creates and manages threads on its own, even in applications that are not written to be threaded." It creates threads at the (indirect) request of the application and schedules them appropriately. The application MUST be designed to take advantage of multithreading. The only difference is that GCD makes it easier for the programmer to actually get those threads up and running, and can possibly schedule them more effectively.

    15. Re:I hate to say it, but... by EvanED · · Score: 1

      Completely wrong on the first two counts, and the third is irrelevant. Here is why: Grand Central Dispatch is not a "thread manager" in the sense you mean. It makes and manages threads on its own, rather than relying on the programmer to handle them in inside the application.

      From what I can tell from the Wikipedia article, GCD still requires the application to be programmed to use GCD. (The code samples all have a

      dispatch_apply

      call applied to the stuff that should be concurrent.) If your program wasn't written to that API, then GCD does exactly zero good for it.

      So GCD makes it easier to write concurrent programs, but if you're running non-concurrent programs than the OS can't really do anything about it. That's what your parent was saying.

      (BTW, there exist APIs that behave similarly on other platforms, including Windows; MS just doesn't provide any.)

    16. Re:I hate to say it, but... by EvanED · · Score: 1

      (BTW, there exist APIs that behave similarly on other platforms, including Windows; MS just doesn't provide any.)

      And I might even be wrong on that point; a number of other posts mention Microsoft APIs (both in the Windows API and .Net) that are in the same general area. I'm not familiar with any of them, so can't compare to/contrast with GCD or other seemingly similar frameworks like Cilk.

    17. Re:I hate to say it, but... by jim_v2000 · · Score: 1

      Pssst! It's not supposed to be that slow. Something is wrong with your particular machine.

      I almost never reboot my desktop and my laptop pretty much is either in hibernate or suspend when I'm not using it. Both run Windows 7 and I don't have any performance issues with them.

      --
      Don't take life so seriously. No one makes it out alive.
    18. Re:I hate to say it, but... by jim_v2000 · · Score: 1

      Actually, you're the one who's wrong. The programmer still has to figure out how to write his application in a way that allows for multiple threads. Apple just took out the part where the programmer has to create the threads. The OS doesn't break down the tasks on its own.

      "It creates and manages threads on its own, even in applications that are not written to be threaded." No, it doesn't. The programmer still has to break up his app into threadable work units. GCD does nothing on apps that are not designed to be threaded.

      --
      Don't take life so seriously. No one makes it out alive.
    19. Re:I hate to say it, but... by jim_v2000 · · Score: 1

      Well then, it's a good thing that Windows 7 is pretty snappy.

      --
      Don't take life so seriously. No one makes it out alive.
    20. Re:I hate to say it, but... by ceoyoyo · · Score: 1

      I believe MS provides thread pool libraries which do the "making it easier" part that GCD does. GCD also has the feature (which Windows doesn't, AFAIK) that the thread pools are managed by the system and there are some advantages there. If you've got a couple of heavy apps running GCD might decide to break their workloads into fewer threads each for efficiency.

    21. Re:I hate to say it, but... by Anonymous Coward · · Score: 0

      Enough with the plugs for "Grand Central Dispatch" which is just OpenCL anyway.

    22. Re:I hate to say it, but... by drsmithy · · Score: 1

      Completely wrong on the first two counts, and the third is irrelevant. Here is why: Grand Central Dispatch is not a "thread manager" in the sense you mean. It makes and manages threads on its own, rather than relying on the programmer to handle them in inside the application. That is what it is all about and what makes it different, as you would know if you knew the even slightest thing about it.

      So you're saying GCD can take existing, unmodified applications and inherently unparallelisable problems and make them work across multiple processors ?

      Therefore, my comment has everything to do with what you wrote. No, the programmer does NOT have to design the program around threading. That's the point.

      Yes, they do. GCD can't magically make arbitrary code multithreaded and parallel. It can make it easier for the developer to make their code multithreaded, but it can't do it for them. Ie: the developer still has to know what they're doing, and whatever it is they're trying to do has to actually benefit from multithreading.

      Irrelevant.

      It's completely relevant. The best application design and threading in the world won't see much benefit if the OS scheduler is crap.

      GCD is NOT just a "thread scheduler". It creates and manages threads on its own, even in applications that are not written to be threaded. Does Windows do that? Any flavor or Windows? No. They do not.

      Vista's (and later) "Thread Pool" encompasses some of the functionality of GCD. Parallel Extensions is another part of Microsoft's similar technology. Or there are third-party libraries.

    23. Re:I hate to say it, but... by Anonymous Coward · · Score: 0

      The difficulty for the programmer is not in 'dealing with' 128 cores, but in designing a program with independent and asynchronously-computing chunks and synchronizing them in such a way that the scheduler can run any of these chunks across any number of cores and the program operates as expected. Additional cores do not complicate synchronization issues for properly written multi-threaded programs. All of the MacZombies spouting off about Grand Central Dispatch really need to actually do some parallel programming. All GCD is is a high-level abstraction of the same basic thread pool pattern used by every other OS in existence. It does not magically solve the optimum multi-core scheduling problem and world hunger at the same time, as some people on this site would have you believe, and in a lot of ways seems like a method to avoid the beachball syndrome of earlier OS X versions, that is, a way to hide operations taking a long time by spawning new threads so the interface never stalls, which shouldn't have happened in the first place. I'm not saying that any other OS does it better, and high-level abstractions are a great way for inexperienced programmers to make their cobbled-together apps suck down all cores on a system rather than just one, but it doesn't do anything half as miraculous as people seem to believe. The OS has, since the dawn of preemptive multiprocessing, handled the threads, not the programmer. Just because the abstraction is higher-level does not correct the race conditions and deadlocks that are the real parallel programming issues. Personally, I'd rather be using a more mature implementation such as OpenMP or MPI, but whatever spawns your threads I suppose.

    24. Re:I hate to say it, but... by Nadaka · · Score: 2, Insightful

      You may not have to write your code around threading, but you then have to write it around grand central dispatch. Having GCD available is going to do absolutely nothing for a program that was not written with GCD in mind. Its changing one set of problems/features for another. Writing multi-threaded software isn't exceptionally hard. I have done a lot of it. It may take a lot less code with GCD, but you also give up control. Even using GCD with code blocks you still have to deal with the problems that can be a pain in the ass, things like concurrency, blocking and munging data.

    25. Re:I hate to say it, but... by exomondo · · Score: 1

      Completely wrong on the first two counts, and the third is irrelevant. Here is why: Grand Central Dispatch is not a "thread manager" in the sense you mean. It makes and manages threads on its own, rather than relying on the programmer to handle them in inside the application.

      Correct, it's a thread-pool. Which means it still relies on the application programmer to actually parallelise the problem. GCD doesn't magically create parallelism, it simply manages the threads themselves.

      It creates and manages threads on its own, even in applications that are not written to be threaded..

      What do you mean by managing threads even for applications that are not written to be threaded? If they are not written to be threaded - or to take advantage of GCD - then what exactly does it do for those applications?

    26. Re:I hate to say it, but... by Anonymous Coward · · Score: 0

      GCD is nothing more than a thread-pool w/ a pool scheduler that has system-wide knowledge.

      All it can do is improve performance at the margins by squeezing a bit more efficiency out of the scheduler.

      It's not magical, and it's not going to gain any traction outside of OS X.

      The only interesting thing about GCD was that it coincided w/ Apple's release of their GCC closures implementation. But that's not going to be adopted outside of Apple, either, because C++0x's lambda specification has more momentum (and presumably will carry over to a C implementation).

    27. Re:I hate to say it, but... by willy_me · · Score: 1

      When booted into Win, more often than not I have two cores pegged high, and the others idle. Getting even use out of all cores is the exception, not the rule.

      This is because Windows it trying to minimize the movement of threads between cores. Every time a thread switches to a different core the cached data and instructions must be reloaded. This takes time - potentially lots of time depending on the architecture. So by keeping a thread on the same core Windows is trying to speed things up. Now with the newer quad core chips this is less of a problem. They generally share an L3 cache so the time penalty of switching cores is greatly reduced.

      The behaviour you noticed is normal and expected. It is not an indication of a flawed design - just a different design. Linux has a pile of different schedulers - some work better in some situations and others in other situations.

    28. Re:I hate to say it, but... by Yokaze · · Score: 1

      With the same application mix, an even distribution of load is not a good sign: You have to wake the sleeping CPUs more often, so they can't switch them to a deeper sleep mode, and probably, the scheduler is switching the threads between processors, which means more cache misses.

      So, the load graph alone is not a good indicator. Of course, that doesn't make your observation any less valid.

      --
      "Between strong and weak, between rich and poor [...], it is freedom which oppresses and the law which sets free"
    29. Re:I hate to say it, but... by Anonymous Coward · · Score: 0

      drsmithy:
      "but if the applications are only coded to have, say, 1 or 2 "processing" threads, then there's nothing the OS can do to change that."

      GCD may provide an easier way for developers to make use of multiple cores, but the developer still has to use the library. I cannot comprehend how your post is +4 Insightful. OSes and frameworks improve to allow developers greater use of computing resources. However the OS cannot magically parallelize (most) code.

      GCD allows developers to schedule 'tasks' rather than 'threads'. This is nice as thread creation can be incredibly expensive. However, the programmer is still required to ensure thread safety for the data accessed in these 'tasks'. Therefore race conditions and other effects of poorly written multi-threaded code may continue to exist. GCD isn't a magic silver bullet.

    30. Re:I hate to say it, but... by TheNetAvenger · · Score: 1

      Good points, all. I guess I should point out that the applications which seem to have the worst stalls, and which affect each other the worst are Outlook, Word, Excel, and IE. If one's locked, then I pretty much can't do anything with the others

      Ok, if this is happening, even on a single core Pentium 200mhz, then you have problems.

      Seriously, I'm sure you mean well, but your system is very much NOT running like 99.99% of other people's computers, and instead of just assuming this is a 'windows thing' you should address the problem, heck even try a clean install if you are going to stick with XP, but highly consider Win7.

      You could have anything from a bad block on your hard drive to even some strange utility hooking in to the applications in a way that it shouldn't.

      Good luck, and don't accept this as normal.

    31. Re:I hate to say it, but... by TheRaven64 · · Score: 2, Informative

      I am finding it very difficult to believe that you have actually used GCD. I have, and have read most of the code for the implementation. Creating threads is not hard - it is definitely not what makes parallel programming difficult. The difficult bit is splitting your code into parts that have no interdependencies and so can execute concurrently.

      When you use libdispatch, you still have to do this. All that it does for you is implement an N:M threading model. It allocates a group of kernel threads and then multiplexes them into work queues. The pthread_workqueue_*_np() family of system calls lets the kernel decide the optimum number of kernel threads for the application, depending on system configuration and load. The libdispatch code then executes blocks on these threads. This saves some thread creation time and saves some context switching and cache churn because it runs blocks sequentially in a small number of threads (ideally one per core), rather than running them all concurrently on a separate thread.

      It creates and manages threads on its own, even in applications that are not written to be threaded

      No it doesn't. You must get a dispatch_queue_t and then send it blocks to execute concurrently. You must do this explicitly.

      --
      I am TheRaven on Soylent News
    32. Re:I hate to say it, but... by ceoyoyo · · Score: 1

      FreeBSD has already implemented GCD.

      I guess by "outside of Apple" you meant "Microsoft."

    33. Re:I hate to say it, but... by juasko · · Score: 1

      Under GCD the programmer dont need to thread his code. He simply tells the complier here this part i want thredded. The compiler does the thredding not the programmer. OR is my understanding of Block, connected to GCD or libdispatch wrong? blocks being implemented into c, c++ and objC and the gcc compiler support these bolcks. Blocks not to be confused with blocks in syntax or other. Read the manual. Not a programmer myself but quite good at analyzes.

    34. Re:I hate to say it, but... by juasko · · Score: 1

      This is where blocks comes in. As I understand the programmer can simply multithread his whole stuctured C app to an multithreded app with one line of code. If that is optimal or best praxis when it comes to mulitthread coding is a different story. But what the programmer needs is one line of code and a recompilation. And suddnly he has an dynamic multithreadded app from his old structured C app. True this what is say here is an oversimplification of what the programmer needs to do. But technically speacing that should be it.

    35. Re:I hate to say it, but... by juasko · · Score: 1

      Hey I can still make my hello world app work multithreaded in GCD with only one line of code that is referred to as blocks. I believe you all have little clue of the implication this have. I don't say that an app should not designed for multithreading. But I simply don't have to One line of code and all my app is multithreaded. If that is optimal or good programming is an other issue but blocks/GCD provides exactly that possibility. I don't have to design my app for multithreading. And my old app there that haven't been touch in a long while Is simply multithreaded during an afternoon.

    36. Re:I hate to say it, but... by Nadaka · · Score: 1

      Your understanding is wrong.

      You are not a programmer.

      You lack the fundamental foundation to even begin understanding what is actually happening in software on even a basic level much less a moderately advanced topic like parallelism.

      Using a traditional threading model I can "tell my program to create a thread here" GCD allows this with less code on my part, it also has some minor advantages in thread management that it handles automatically. But it does not solve any of the special problems involved in breaking a program down into threadable chunks.

    37. Re:I hate to say it, but... by Jane+Q.+Public · · Score: 0, Flamebait

      Yeah, they got it. From Apple!

      What you say is true but I did mean "mainstream OSes". I don't think FreeBSD quite qualifies yet.

    38. Re:I hate to say it, but... by Jane+Q.+Public · · Score: 0

      Well, I stand corrected. It isn't totally automatic; it does call for a programmer to say that a block can be threaded. On the other hand, as you mention, it still handles the thread pooling and more importantly, synchronization that I don't think are available with the Windows tools.

    39. Re:I hate to say it, but... by hicksw · · Score: 1

      I noticed the same on my mac. With a set of eight CPU graph meters in the menu bar, they're almost always evenly pitched anywhere from idle to 100%, with a few notable exceptions like second life, some photoshop filters, and firefox of all things.

      When booted into Win, more often than not I have two cores pegged high, and the others idle. Getting even use out of all cores is the exception, not the rule.

      Have you perhaps encountered a Windows license limit? Most Windows licenses have a two cpu limit.

      --
      Welcome to the world of "computer says no".

  5. IT MIGHT BE WAITING by Anonymous Coward · · Score: 0

    FOR IO.

    DON'T LAND THERE.

  6. The problem isnt even that simple by indrora · · Score: 5, Insightful

    The problem is that most (if not all) peripheral hardware is not parallel in many senses. Hardware in today's computers is serial: You access one device, then another, then another. There are some cases (such as a few good emulators) which use muti-threaded emulation (sound in one thread, graphics in another) but fundamentally the biggest performance kill is the final IRQs that get called to process data. The structure of modern day computers must change to take advantage of multicore systems.

    1. Re:The problem isnt even that simple by Anonymous Coward · · Score: 0

      Also, some tasks just cannot be parallelized.

    2. Re:The problem isnt even that simple by lennier · · Score: 1

      Hardware in today's computers is serial: You access one device, then another, then another.

      So you don't have packets coming in/out on sound, network, multiple screens, mouse, keyboard, USB drive, webcam, and hard drive simultaneously?

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    3. Re:The problem isnt even that simple by Anonymous Coward · · Score: 0

      Windows parallelizes this. It does very little processing in the IRQ handler; the bulk of the work is done in a Deferred Procedure Call (DPC), which can run on any thread (i.e. any CPU).

      The bottleneck is the speed of the hardware, not the speed at which the OS services it.

      Or are you using a twenty year old OS?

    4. Re:The problem isnt even that simple by sjames · · Score: 1

      It's not accessing different devices that's the problem, generally, you give the device work, then do something else while it completes. The problem is that the individual device is serial. You have a half dozen disk I/Os to do, so you queue them up and they are executed one at a time.

    5. Re:The problem isnt even that simple by pslam · · Score: 1

      That's simply not true, and hasn't even been true since the first computers I've used (like, 1980s). Only the most basic, cheap devices use polled I/O for all hardware access. Even an ancient floppy disk peripheral has a small FIFO it can simultaneously fill while the CPU is busy doing other things. I can't understand how you can pass comment given this apparent lack of basic architecture knowledge.

    6. Re:The problem isnt even that simple by PhongUK · · Score: 1

      Each one of the devices outputting data in the list you mentioned is working in parallel to the other devices, but in serial to itself. The CPU is providing data to those devices in serial, so yes, it is still a serial system, but seemingly parallel.

  7. That kernel architect by Anonymous Coward · · Score: 1, Funny

    is Probertly right.

    1. Re:That kernel architect by SilverEyes · · Score: 0, Offtopic

      is Probertly right.

      is Probertly right?

      --
      Interesting.
  8. Grand Central? by volfreak · · Score: 3, Insightful

    Isn't this the reason for Apple to have rolled out GrandCentral in Snow Leopard? If so, it seems it's not THAT hard to do - at least not that hard for a non-Windows OS.

    1. Re:Grand Central? by larry+bagina · · Score: 1, Insightful

      With .net it should be trivial. Seems more like an education/cultural problem than a technical one.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    2. Re:Grand Central? by jonwil · · Score: 2, Insightful

      The overhead of systems like .NET is part of WHY we have a problem with excessive CPU usage in the first place.

    3. Re:Grand Central? by jasmusic · · Score: 4, Insightful

      I'm thinking you don't have much experience with .NET. During my projects it has always run comparable to native compiled code when I write my code with the mindset of a C++ programmer and not a VB one.

    4. Re:Grand Central? by shutdown+-p+now · · Score: 1

      Microsoft has its own offering similar to Apple's GCD - Parallel Patterns Library for C++. It's mostly same primitives (tasks & groups of tasks) on lower level, though it also offers a few simple STL-like algorithms with automatic parallelization.

      For .NET, the same task primitives are offered, and then there's Parallel LINQ on top of that, which is effectively automatic parallelization of queries over sequences, with all the typical operations - map, reduce, filter, group, join, order - supported.

    5. Re:Grand Central? by Jane+Q.+Public · · Score: 0

      You missed the point. With Windows (XP, Vista, or 7), you, as a programmer, have to explicitly handle threads. Snow Leopard does it instead in the OS. Is it as efficient? Not yet maybe. But as more cores come around it will eventually be the only practical way to go.

    6. Re:Grand Central? by Anonymous Coward · · Score: 0

      Bah...I've been using paint.net for a while now, the free replacement to mspaint. It takes about 10 seconds to load on my dual core, just like the old mspaint did...err...

    7. Re:Grand Central? by Anonymous Coward · · Score: 0

      It loads in 5 seconds on my 2ghz dual core machine and provides over 20x the functionality of the original mspaint. Paint.net is closer to Photoshop elements than mspaint.

    8. Re:Grand Central? by Anonymous Coward · · Score: 0

      @jonwil - not sure what .NET has to do with this observation....?

      @op - Grand Central & OpenCL were added to specifically address multicore optimization of the OS and to use graphics adapters for general computing when possible (respectively). If Windows developers/planners are just deciding to start thinking about this...They've got bigger problems than I thought...

    9. Re:Grand Central? by mswhippingboy · · Score: 1

      But as more cores come around it will eventually be the only practical way to go.

      Great! I didn't realize that one of the greatest challenges of software engineering has been solved, by Apple no less!
      Maybe Apple can now turn to solving the issues in quantum computing!
      GMAFB!
      Grand Central is at best an elegant solution for a narrow class of (simple, somewhat parallel processing) problems. All it really does is abstract the concept of threads away into "tasks" which are managed by the OS rather than the programmer. This will not complete solve the problem any more than garbage collection completely solves memory management problems. The CPU still has to switch contexts between these tasks although the overhead of tasks is less than that of true threads, it's simple a (possibly) more efficient implementation of the same old concept of task switching that's been around for decades (although I'm sure Apple will try and patent it as if it's something totally new).
      Similar reimplementation of threading are available or being worked on in other environments as well (Java - JSR 166, .Net - TPL, OpenMP and others).
      However, none of these approaches are going to yield efficient use of massively parallel systems when they become commonplace. There will have to be a major paradigm shift in the way applications are developed in order to take advantage of these systems for general purpose computing.

      --
      Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
    10. Re:Grand Central? by Anonymous Coward · · Score: 0

      Hey Apple fanboy: he's not talking about adding another threading library. Yeah, Grand Central Dispatch is a great idea, but it does not solve the fundamental problem of the operating system not scaling well to multiple processors. Probert and basically every other on of the multicore guys have been saying this for years: we need to re-think the model of what a computer is, from the hardware up. x86 sucks -- ARM does a lot of good, but it's just not the change we need, at least in the opinion of this (ITOOT) AC. While it may not be obvious now, in another few years when users demand that they want MORE things and that they want it RIGHT NOW, you will see.

      Read up on Lewis and Berg or some of the things that Yale Patt discusses: we need to re-think the processor. Then we need to re-think the languages we use to describe our problems to a computer (C has served us well, but it's time we moved on to functional programming languages). After that, we need to re-think the operating system. And through all of this, we need to support all of our legacy, x86-based programs. Seem like a non-trivial problem now?

    11. Re:Grand Central? by exomondo · · Score: 1

      You missed the point. With Windows (XP, Vista, or 7), you, as a programmer, have to explicitly handle threads.

      No you do not. You can use the Task Parallel Library and PLINQ.

    12. Re:Grand Central? by jimicus · · Score: 1

      Isn't this the reason for Apple to have rolled out GrandCentral in Snow Leopard? If so, it seems it's not THAT hard to do - at least not that hard for a non-Windows OS.

      Windows has been playing catchup with OS X for years, it's just there are so many fanbois on both sides that it can be very hard to get an objective viewpoint.

      http://www.youtube.com/watch?v=n74mktpenx8

      Of course, you may decide that I am a fanboi. In which case, perhaps you should buy a Mac and develop your own objective viewpoint?

    13. Re:Grand Central? by Alvara · · Score: 1

      I like that sentiment. My most recent example is a senior programmers codes that was. if( HeavyDBCall() && LightFilteringCall() ) doThis(). A C++/C# programmer that was properly trained would laugh at that. While a VB programmer probably would have no clue. I modified that line to do the light filtering first, so the heavy db only ran when necessary. It left me wanting to ask where that senior programmer learned to code.

    14. Re:Grand Central? by Jane+Q.+Public · · Score: 0, Troll

      You're still doing it manually! With Task Parallel Library you still have to use Parallel.Invoke()!!! And if you want parallelism, you still have to take the trouble to use PLINQ.

      It just doesn't compare. It doesn't even approach having threading and thread management built into the OS. And I never claimed that it was the most efficient. But it is still the only mainstream OS that does that. At all.

    15. Re:Grand Central? by Jane+Q.+Public · · Score: 0, Flamebait

      "... it's simple a (possibly) more efficient implementation of the same old concept of task switching that's been around for decades (although I'm sure Apple will try and patent it as if it's something totally new)"

      I think maybe you should look it up and learn a little about it. That is not the way it works. If all it was doing was task switching, it wouldn't be able to make use of parallel cores. It's still a threading model, not a task switching model. All you are doing here is guessing. You could learn more about it than that in one minute on Wikipedia.

      "Similar reimplementation of threading are available or being worked on in other environments as well (Java - JSR 166, .Net - TPL, OpenMP and others)."

      Sure. If you manually make use of the threading tools. You still have to do that on Windows, and that was my point. You can do that TOO on a Mac. But the point was that unless you want maximum efficiency, you do not have to do that on a Mac.

    16. Re:Grand Central? by exomondo · · Score: 1

      You're still doing it manually! With Task Parallel Library you still have to use Parallel.Invoke()!!! And if you want parallelism, you still have to take the trouble to use PLINQ. It just doesn't compare. It doesn't even approach having threading and thread management built into the OS. And I never claimed that it was the most efficient. But it is still the only mainstream OS that does that. At all.

      And in GDC you still have to get a reference to a dispatch queue and call dispatch_async when you want to run a block in another thread. You're still doing things manually, you still have to determine when to use serial (essentially locking) and concurrent queues, you still have a semaphore construct you have to control, it's not magically doing concurrency for you.

    17. Re:Grand Central? by mswhippingboy · · Score: 1
      Perhaps you should study up a little on OS design. Task switching absolutely does occur in a threaded model. When the OS scheduler interrupts a "task" (whether it be a thread or a process - and this includes Grand Central tasks) because it's time-slice has expired or for any other number of reasons, the OS (assisted by microcode in the CPU) saves the state of the processor (PSW, registers, etc.), restores the state of the next task to be dispatched and begins processing the new task. This all happens many times per second and gives the appearance of multiple threads running in parallel. The only difference between the way this works on a single core or multi-core processor is that the scheduler "may" dispatch the task (or task, or process - whichever term you prefer) on a different core than the one it was interrupted from. Grand Central is no different. The ONLY real difference from an OS perspective is that GC "tasks" are lighter weight than threads, as threads are lighter weight than processes. By lighter weight, I'm referring to the amount of information that must be saved and restored during task switching operations.
      Before you start climbing on your soapbox impuning other's knowledge you should gain a little knowledge yourself.

      If all it was doing was task switching, it wouldn't be able to make use of parallel cores.

      Need I say more?
      I think I will.

      Sure. If you manually make use of the threading tools. ... you do not have to do that on a Mac

      I'm sorry, but I'm not buying. Applications have to be structured to take advantage of parallelism and no simple tweaks to a language (any language) will turn a single threaded application into a parallel processing application. It just doesn't work that way.
      I worked with ADA 20 years ago and it had extensive support for concurrency, but unless you structured your application to run in parallel this feature was useless.
      One final point. OS X is a derivative of FreeBSD and NetBSD. These are Unix OS's and all support the same basic multi-tasking model, and Windows is functionally the same as well. An argument can be made as to which system has the best scheduler, dispatcher, etc., but all in all they pretty much do the same thing. All Apple is really doing here is layering another API on top of the regular threading model and adding some syntactic sugar to C++ and Obj-C (thereby making applications non-portable). I'm glad you are so enthralled with GCD and I hope you enjoy your Mac world.
      I prefer to work in less proprietary worlds (yes, even Windows is far more open than OS X - as amazing that seems).

      --
      Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
  9. Why? by DoofusOfDeath · · Score: 1

    Why should you ever, with all this parallel hardware, ever be waiting for your computer?

    I dunno - maybe because optimal multiprocessor scheduling is an NP-complete problem? Or because concurrent computations require coordination at certain points, which is an issue that doesn't exist with single-threaded systems, and it's therefore wishful thinking to assume you'll get linear scaling as you add more cores?

    1. Re:Why? by coolsnowmen · · Score: 1

      Except correct prioritization should allow the user to still do things while "background" processing is done. No one said it needed to be optimal ( though the word optimal is meaningless w/o a given criteria), they are just saying it could be better for the user.

    2. Re:Why? by masterzora · · Score: 1

      I dunno - maybe because optimal multiprocessor scheduling is an NP-complete problem?

      That only means we can't get an absolutely optimal solution in polynomial time. Fortunately, we are able to get a solution arbitrarily close to optimal in polynomial time. Find the correct balance of time vs. optimality and BAM that NP-completeness isn't really a huge concern.

      Or because concurrent computations require coordination at certain points, which is an issue that doesn't exist with single-threaded systems, and it's therefore wishful thinking to assume you'll get linear scaling as you add more cores?

      Now you're just putting words into his mouth. Nobody's expecting linear scaling, here! That is an entirely different question.

      --
      Remember, open source is free as in speech, not free as in bear.
    3. Re:Why? by RightSaidFred99 · · Score: 1

      Thank God we have you to patronizingly explain to the multi-decade experienced kernel/OS developer all about multiprocessor scheduling and it being "NP-complete"!

  10. Current architecture flawed but workable BUT.... by syousef · · Score: 4, Interesting

    ...the implementation sucks.

    Why for example does Windows Explorer decide to freeze ALL network connections when a single URN isn't quickly resolved? Why is it that when my USB drive wakes up, all explorer windows freeze? If you are trying to tell me there's no way using the current abstractions to implement this I say you're mad. For that matter when a copy or move fails in Explorer, why can't I simply resume it once I've fixed whatever the problem is. You're left piecing together what has and hasn't been moved. File requests make up a good deal of what we're waiting for. It's not the bus or the drives that are usually the limitation. It's the shitty coding. I can live with a hit at startup. I can live with delays if I have to eat into swap. But I'm sick and tired of basic functionality being missing or broken.

    --
    These posts express my own personal views, not those of my employer
  11. Dumb programmers by Sarten-X · · Score: 2, Insightful

    You wait because some programmer thought it was more important to have animated menus than a fast algorithm. You wait because someone was told "computers have lots of disk space." You wait because the engineers never tested their database on a large enough scale. You wait because programmers today are taught to write everything themselves, and to simply expect new hardware to make their mistakes irrelevant.

    --
    You do not have a moral or legal right to do absolutely anything you want.
    1. Re:Dumb programmers by Anonymous Coward · · Score: 0

      Claiming X programmers are dumb doesn't make you any smarter. Go write an operating system then you can talk. This isn't even about programmers today, this is about programmers in the 1980s when the operating systems we currently use were first designed.

    2. Re:Dumb programmers by Anonymous Coward · · Score: 2, Insightful

      not true, you wait because management speed tracks stuff out the door without giving developers enough time to code things properly and management ignores developer concerns in order to get something out there now that will make money at the expense of the end user, I have been coding a long time and have seen this over and over. Management doesn't care about customers or let developers code things correctly - they only care about $$$$$$$

    3. Re:Dumb programmers by Anonymous Coward · · Score: 0

      (replying to myself)
      To tell the truth, what you just described has nothing to do with the problem we are discussing anyway. It doesn't even make sense, there's no reason one would have to choose between animations and a fast algorithm. I don't think you're even a programmer....

    4. Re:Dumb programmers by Sarten-X · · Score: 1

      From TFA:

      The problem is today's desktop programs don't use the multiple cores efficiently enough, Probert said.

      If you have a program that needs to do X things at once, it'll run best on multiple cores. You can't avoid that fact. TFA makes references to eliminating the abstraction of a process, giving each program only a single core. My point is that that won't help at all if the idiotic programmers of this world still can't write a decent program.

      It doesn't matter if you can run 50 things at once, if the programs you use are written poorly. They'll still try to run in a single thread, doing a single thing, and preferring shiny buttons over actual function. I/O will have to wait for screen updates. Until I start seeing consistently better programs, I'll continue to assume programmers are dumb.

      It's great to push for better scheduling, however you want to do it, but having both better scheduling and improved efficiency will still be better. I personally think that redesigning the OS concepts is a poor choice for improvement.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    5. Re:Dumb programmers by Sarten-X · · Score: 1

      I agree, management's got a lot to do with it. I have more of a personal vendetta against bad programmers, but I'm open to diversion. Who hires the programmers with half a bachelor's degree, because they're cheaper? Who pushes for a shiny UI in favor of extensive testing? Bad developers write bad code, and bad management encourages it.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    6. Re:Dumb programmers by Anonymous Coward · · Score: 0

      You did nothing to disprove my point, you just wrote more about your opinions. Reread what I said before and pretend that is my new response.

    7. Re:Dumb programmers by Sarten-X · · Score: 1

      omg you don't think i'm a deity you must not program

      How should I respond to that? I ignored your insults, and responded to what little substance there was. I don't think you understood at all what I said, so I clarified. I'll try it again, nice and simple:

      It doesn't matter how the OS runs if application programmers suck. In the real world, programmers suck. We implement hacks and don't fix them. We obey the whim of Marketing, because that's what we're paid to do. We sacrifice good algorithms for things that work right now. I'm a programmer, I suck, and I've never met a programmer who doesn't. I have, however, met many who don't realize it.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    8. Re:Dumb programmers by hitmark · · Score: 1

      and bad managers do so because the ones holding the carrot known as a performance bonus, the shareholders, dont care about how the share value goes up, as long as it does.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    9. Re:Dumb programmers by dkleinsc · · Score: 1

      You wait because some marketing droid thought it was more important to have animated menus than a responsive computer.

      For software coming from proprietary land (which is what a Windows guy like the author in the original article sees as all that really counts), the programmers have little-to-no control over the feature list. So even if the programmers use the smartest, fastest algorithm that would make Knuth weep for joy, it won't help, because there will be a new checklist feature waiting in the wings to get added in.

      That's also a reason for software bloat: for an upgrade to sell to the market, it has to do more than the previous version, not just do the same job as the previous version but in a better way. In open source land, if a better algorithm is created, coded, and accepted, it's in and will tend to get distributed relatively quickly. But if you're a talking about a software business, then the work to make software technically better is simply a drain on programmer time that should be going to the next upgrade that can be sold for big bucks.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    10. Re:Dumb programmers by Sarten-X · · Score: 1

      ...And to avoid stepping on toes, the programmers acquiesce. I complained about managers once already in this thread.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    11. Re:Dumb programmers by Anonymous Coward · · Score: 0

      Other than the waiting, how is it living in 1997?

    12. Re:Dumb programmers by Reservoir+Penguin · · Score: 1

      And this is why free software developers with no managers looming over them create such great, responsive, multi-core aware desktop applications, right? What a joke, and a poor excuse for your laziness.

      --
      US-UK-Israel: The real Axis of Evil
  12. Re:Fist post! by SilverEyes · · Score: 4, Funny

    Fist post!

    I come to /. to read tech news... not so see people fisting.

    --
    Interesting.
  13. Re:Fist post! by Sarten-X · · Score: 1

    Here you go: R r

    Copy & paste as needed.

    --
    You do not have a moral or legal right to do absolutely anything you want.
  14. Re:Fist post! by Anonymous Coward · · Score: 0, Funny

    Seems like you've come to the wrong place.

  15. Luckily OSX is Already Has MultiCore Tech by Shuh · · Score: 1, Informative
    1. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 1, Insightful

      And if you knew what it did, you'd know it isn't going to help.

    2. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 1, Insightful

      It's called Grand Central Dispatch.

      Despite having a name and a Wikipedia page. it's not doing a good enough job.

    3. Re:Luckily OSX is Already Has MultiCore Tech by Sc4Freak · · Score: 2, Insightful

      I'm not sure I get it - GCD just looks like a threadpool library. Windows has had a built-in threadpool API that's been available since Windows 2000, and it seems to do pretty much the same thing as GCD.

    4. Re:Luckily OSX is Already Has MultiCore Tech by PhrostyMcByte · · Score: 1

      What he is trying to do is get enough cores on a CPU so that each thread or process can run on it's own core. He essentially wants to remove the scheduler from the OS, so that there would be no time slices -- stuff would just run straight with no context switching. This is entirely different from GCD, which is an implementation of task-based parallelism backed by thread pools.

      This would really only work on CPUs with a few thousand cores, and even then the CPUs would need to have some very intelligent power management for cores that aren't being used, or are in use but waiting on something like I/O.

    5. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 0

      It's obviously broken... (not the link)

    6. Re:Luckily OSX is Already Has MultiCore Tech by PhrostyMcByte · · Score: 1

      Sort of. It's a little higher-level and integrates better with the languages.

      The real equivalents for Windows are being introduced with Visual Studio 2010 with the Concurrency Runtime for VC++ and the Parallel Framework for .NET. From what I've seen of GCD, these go a few steps past it and provide a pretty extensive set of operations that easily differentiate it from simple thread pooling.

    7. Re:Luckily OSX is Already Has MultiCore Tech by ceoyoyo · · Score: 1

      It's a system level thread pool library, along with a nice interface for sending off little bits of code to the pool.

    8. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 0

      Grand Central is a nice way to tide things over for a while, but not a satisfactory answer to the problem. I've been having the honor of interacting with some of the finest minds now working on the problem of multicore and massive parallelism, and everyone is still struggling with it. And yes, there are plenty of Macs around, and they'd be building off of Grand Dispatch if it really was a great answer to the question.

      When I was last interested in GC, Apple hadn't released technical docs; I've been skimming them over just now and it seems unwieldy and just plain ugly -- it abstracts things away from the hardware, while creating a multi-level design that's much more confusing than need be. (Not to mention, they'll never make it cross-platform.)

      One design I've recently been introduced to pools the actual hardware threads and uses a caller/callee hierarchical relationship for establishing the distribution of work processes. Although I have questions about that design as well, it is much cleaner than GC and far more intuitive. I think it has some small chance of leading to about as good of a solution as we'll get in the near future, whereas GC seems like a very slapped-together dead end. I'd skip the braggadocio about GC if I was you -- at least around anybody who's actively working on solutions to the problem.

    9. Re:Luckily OSX is Already Has MultiCore Tech by shutdown+-p+now · · Score: 3, Insightful

      The trick with GCD is that it is somewhat more high-level than a simple thread pool - it operates in terms of tasks, not threads. The difference is that tasks have explicit dependencies on other tasks - this lets scheduler be smarter about allocating cores.

    10. Re:Luckily OSX is Already Has MultiCore Tech by Smurf · · Score: 4, Interesting

      It seems you are severely underestimating what GCD means to the application developer. I strongly suggest you read parts 12 and 13 of John Siracusa's excellent review very carefully. As Siracusa says,

      Those with some multithreaded programming experience may be unimpressed with the GCD. So Apple made a thread pool. Big deal. They've been around forever. But the angels are in the details. Yes, the implementation of queues and threads has an elegant simplicity, and baking it into the lowest levels of the OS really helps to lower the perceived barrier to entry, but it's the API built around blocks that makes Grand Central Dispatch so attractive to developers. Just as Time Machine was "the first backup system people will actually use," Grand Central Dispatch is poised to finally spread the heretofore dark art of asynchronous application design to all Mac OS X developers. I can't wait.

    11. Re:Luckily OSX is Already Has MultiCore Tech by NatasRevol · · Score: 1

      So, if you're actually working with 'some of the finest minds', why don't you tell us what they're working on that's better than GCD? Your one example seems to indicate that the software needs to manage the threads - like they did for the last 10 years - rather than letting the OS take care of all the applications threads on an as needed basis like GCD does.

      And why do you mention that Apple wouldn't make it cross-platform? Do you think Microsoft will?
      At least Apple made GCD opensource. I *know* Microsoft won't do that.

      http://libdispatch.macosforge.org/

      --
      There are two types of people in the world: Those who crave closure
    12. Re:Luckily OSX is Already Has MultiCore Tech by hitmark · · Score: 2, Insightful

      so basically a big pile of C64 wired to a single keyboard and screen, via a BIG kvm switch?

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    13. Re:Luckily OSX is Already Has MultiCore Tech by Sc4Freak · · Score: 1

      I've read through those pages, and the overarching conclusion seems to be that it's a threadpool that's easier to use. I don't doubt the veracity of that claim, because the WinAPI is pretty horrible to work with in general.

      But in terms of the actual underlying technology, it seems relatively standard aside from the fact that GCD can intelligently handle dependencies between tasks. For example, the threadpool library on Windows is a system-level library, and the OS determines how many kernel threads to create, based on hardware resources and system load. You schedule tasks, and Windows will queue the task and run it some time in the future once a thread becomes free.

      Like I said, this sort of thing has been around for a long time - a system-level threadpool library has been available on Windows since Windows 2000... but we haven't exactly seen a mulitcore renaissance on Windows over the past few years. And from what I've seen, there isn't much to suggest that GCD will do any different.

    14. Re:Luckily OSX is Already Has MultiCore Tech by Daltorak · · Score: 1

      The Microsoft Windows equivalent of Grand Central Dispatch is called User-Mode Scheduling, and is included with Windows 7 and Windows Server 2008 R2.

      http://msdn.microsoft.com/en-us/library/dd627187(VS.85).aspx

      Microsoft has also released application libraries on top of UMS to make it easier to use in certain languages. C++, for example, has the Concurrency Runtime. More on that here:

      http://msdn.microsoft.com/en-us/library/dd504870(VS.100).aspx

      GDC and UMS both let an application developer accomplish pretty much the same thing: move all into a single process with enough pre-assigned threads to cover all the cores on a system, and then work is queued up and performed on those threads. The benefit of here is that GCD and UMS applications don't have to context-switch into and out of the kernel a bazillion times in order to do a set of parallelizable tasks.

      GDR and UMS+CCR both whittle down the developer's code-writing commitment to a few lines. It's pretty amazing stuff.

      BUT....

      Neither of these technologies really addresses the underlying system-wide problem: adding more CPU cores to a system doesn't increase performance on a linear scale like increasing the speed of the CPU. Every time you add a core, more and more time gets spent doing resource management instead of actual work. OS kernels invariably have locks on important resources (memory tables, for example), and while these things don't matter at all on a 2 or 4 core system, they're going to be a huge bottleneck on a 200-core system. No general-purpose operating system on the market today... not Windows, not OS X, not even Linux... can provide a liner or near-linear performance improvement as the number of cores increase beyond 16 or so. Not as long as there is any kind of shared resource between those cores.

      By the way.... Dave Probert, who is the Microsoft engineer the Slashdot article is discussing, explained UMS in this Channel 9 video over a year ago:

      http://channel9.msdn.com/shows/Going+Deep/Dave-Probert-Inside-Windows-7-User-Mode-Scheduler-UMS/

    15. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 0

      First off, don't get so defensive about Apple and GCD. They were the first stock I ever bought, the only brand of computer I've ever bought, and the only platform that my own projects are developed for. Liking Apple is not incompatible with the fact that GCD is an ugly gap-stop.

      Like I wrote before, currently there's not a great solution in place. Some of that is because there's a divergence in platforms. How well does GCD work with CUDA or OpenCL? How well does it handle HPC on NUMA platforms? I'll be surprised if the answers are any better than "terribly" and "it doesn't". GCD apparently doesn't allow for efficiencies of memory sharing among tasks either, which means either that you have to define tasks to be too large and lose parallelism or you have to define them too small and have time eaten up by memory operations. If that's true, that's a much larger issue than it's overall complexity and ugliness. Memory locality and management is more important than efficient CPU use for many, many tasks and GCD seems to complete ignore that. Please do correct me if there's a mechanism for it in there.

      The solution I mention doesn't require management of threads any more than GCD does (unless the whole thing about specifying queues and priorities is just window dressing), while it does a few key things: it allows finer grained parallelization and prioritization among subtasks, it allows the establishment of parent-child relationships among tasks (while still requiring no knowledge of other tasks or subtasks), and it maintains memory locality across subtasks/children if desired. If you prefer an artificial abstract prioritization model with an unnecessary tiered queue system, then god blessed you with GCD.

      Really, though, everyone is still in the weeds on this. Another tack people are coming up with is simply writing up parallel libraries to build your programs on. However, that creates composability issues unless you use a solution like the above (which manages and allows tuning of hardware thread distribution among the various library tasks being executed).

      I mention that GCD won't be cross-platform simply because that makes it much less useful, unless OS X becomes the standard platform for development. By the way, Intel is spending huge amounts of money on solving composability -- at least around me, they're the big driver of this, although MS is there along with Google and AMD, among others -- so trying to make this an Apple vs. MS debate is rather misguided. It's a fundamental problem that the chipmakers and many others are desperate to solve, because otherwise Intel would have to completely change their way of making chips, which is not something they want to do (someone who advised the design of Intel's multicore chips explained that much of it comes from inertia of not wanting to step too far away from the architecture of regular processors). If there ever is a good solution to this for the desktop, it'll most likely be agreed to as a standard for development among chipmakers and some software companies. Interestingly, though, Apple doesn't seem to be spending any money on outside research. I suspect that's a long-term habit, though, not just limited to this problem. If they had better answers, I'd understand, but I think it's their ego getting in the way.

    16. Re:Luckily OSX is Already Has MultiCore Tech by Bigjeff5 · · Score: 1

      This would really only work on CPUs with a few thousand cores, and even then the CPUs would need to have some very intelligent power management for cores that aren't being used, or are in use but waiting on something like I/O.

      Most people only want to run 5-10 applications at a time at most. By eliminating the need to divide processing time among applications, you eliminate the need for most of the supporting applications in the OS. Think about it. You wouldn't need thousands of cores, in a simple setup you could probably get away with around 30. Heavy users would want 50-100 to handle applications that have been designed for real parallel programming.

      We already have servers with 16 processors standard. Higher-end virtualization systems have 30+.

      All we're missing is an OS designed to divvy up processors among applications instead of divvying applications among processors.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    17. Re:Luckily OSX is Already Has MultiCore Tech by IamTheRealMike · · Score: 1

      I have yet to see a multi-threaded program that was bottlenecked by lack of GCD like features. And I've written/used a lot of high performance multi-threaded software. I agree with those who say it isn't a big deal: I'd love to know what use cases Apple engineers thought they were optimizing. Which scenarios suddenly got faster because of this?

      At any rate, if Apple have somehow achieved great insight into parallel programming that the rest of the industry did not, GCD features can easily be added to other operating systems.

    18. Re:Luckily OSX is Already Has MultiCore Tech by IamTheRealMike · · Score: 1

      What apple calls "blocks" are what other languages have called "closures" and had for decades. Adding closures to Objective-C isn't an interesting advance, and if Siracusa believes that's what makes GCD revolutionary I can only imagine he needs to spend less time writing articles and more time writing or debugging multi-threaded code.

    19. Re:Luckily OSX is Already Has MultiCore Tech by RightSaidFred99 · · Score: 1

      No, you pretty much nailed it. That's (almost) all it is, just implemented as an environment service. What makes it so revolutionary is the cool name and the fact that it runs on an Apple product.

    20. Re:Luckily OSX is Already Has MultiCore Tech by RightSaidFred99 · · Score: 1

      Severely? It's a fancy thread pool. You posted an article saying "it's a fancy thread pool, but with a nice API and usage model". Not revolutionary. The Java concurrency library fro Lea (if I remember) way back when brought the same thing to Java developers. GCD is evolution, not revolution.

    21. Re:Luckily OSX is Already Has MultiCore Tech by RocketRabbit · · Score: 1

      Yes, but GCD can send tasks to your GPU or any other processing resource that can handle it and is sufficiently free enough at the moment.

    22. Re:Luckily OSX is Already Has MultiCore Tech by shutdown+-p+now · · Score: 1

      The point of GCD and the likes is not to let people who're skilled at manual, low-level parallelization do their job better. The point is to let your average programmer parallelize his application with minimum of effort, and without any of the nasty race conditions, deadlocks, and other similar stuff, which tends to pop up all over the place when an inexperienced programmer first sees OS threading primitives.

      Think Java vs C++. Or maybe even C vs assembler (Java would be PLINQ).
       

    23. Re:Luckily OSX is Already Has MultiCore Tech by LingNoi · · Score: 1

      An OS has lots of programs running in the background. Programs for dealing with network traffic, file deleteing/creating/copying, showing the GUI, running the clock app, dealing with your graphics card, plugged in USB devices etc. A redesigned OS would have to deal with more then 5-10 "applications".

    24. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 0

      I remain unimpressed. Do you think that the legions of assholes whose application development experience consists primarily of running some wizards in VB.net will be able to break their applications into chunks suitable for parallelization without actually slowing things down? do you even think they will bother to measure?

      If you need an example, look no further than the Xilinx ISE tools, which recently came advertised as supporting multiple cores. If you can even coerce the software into running on multiple cores (the command line options in the manual are only accepted by one of the two tools for which Xilinx claims support), good luck getting it to run any faster multi-threaded than it does when single-threaded.

    25. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 0

      Moreover, because it is global, you are letting the OS, which is aware of overall resource usage, schedule things with a more global view to efficiency, rather than just worrying about how you want to schedule things with respect to your own application.

    26. Re:Luckily OSX is Already Has MultiCore Tech by juasko · · Score: 1

      I haven't done programming for a while but I've never seen closures in andy C derivied language. It might be news to me but i think your off.

    27. Re:Luckily OSX is Already Has MultiCore Tech by juasko · · Score: 1

      yes because GCD is opensourced and is beeing implemented into other systems but Windows.

    28. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 0

      You posted an article saying "it's a fancy thread pool, but with a nice API and usage model". Not revolutionary.

      If it gets the common application developers to actually use the fancy thread pool, then that will be a (small) revolution. "Those with some multithreaded programming experience may be unimpressed." The thing is, most developers don't have that experience nor the time or motivation to acquire it.

      The Java concurrency library fro Lea (if I remember) way back when brought the same thing to Java developers./quote>

      And yet outside of very specific areas no one uses it... Will that be the case with GCD? That would be the revolution.

    29. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 0

      Do you think that the legions of assholes whose application development experience consists primarily of running some wizards in VB.net will be able to break their applications into chunks suitable for parallelization without actually slowing things down?

      If you had taken the time to read the article you would know the answer is YES (of course replacing VB.net wizard monkeys with their Obj-C counterparts).

      do you even think they will bother to measure?

      Of course, because they will only implement it if they feel something is more or less slow. Since implementing it is frequently a matter of a line or two of code, they will get immediate feedback of the improvement (or lack of it).

      If you need an example, look no further than the Xilinx ISE tools, which recently came advertised as supporting multiple cores. If you can even coerce the software into running on multiple cores (the command line options in the manual are only accepted by one of the two tools for which Xilinx claims support), good luck getting it to run any faster multi-threaded than it does when single-threaded.

      Since those tools don't use GCD that's a very empty example. If anything, it proves that other approaches have failed miserably.

      Again, if you had read the article you would know that things like "coercing the software into running on multiple cores" is something that never comes to mind for a developer using GCD.

    30. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 0

      I've read through those pages, and the overarching conclusion seems to be that it's a threadpool that's easier to use. I don't doubt the veracity of that claim, because the WinAPI is pretty horrible to work with in general.

      [...]

      Like I said, this sort of thing has been around for a long time - a system-level threadpool library has been available on Windows since Windows 2000... but we haven't exactly seen a mulitcore renaissance on Windows over the past few years. And from what I've seen, there isn't much to suggest that GCD will do any different.

      Perhaps we haven't exactly seen a mulitcore renaissance on Windows over the past few years because the WinAPI is pretty horrible to work with in general.

      But since GCD is a threadpool that's easier to use perhaps it will entice the average application developer to actually use it, which may suggest that GCD will do any different from similar things that have been around for a long time.

    31. Re:Luckily OSX is Already Has MultiCore Tech by Anonymous Coward · · Score: 0

      What apple calls "blocks" are what other languages have called "closures" and had for decades. Adding closures to Objective-C isn't an interesting advance, and if Siracusa believes that's what makes GCD revolutionary I can only imagine he needs to spend less time writing articles and more time writing or debugging multi-threaded code.

      Mmmmmm... so you read the conclusion, in particular the sentence "but it's the API built around blocks that makes Grand Central Dispatch so attractive to developers," and you thought you would fool anyone into believing that you actually read Siracusa's article?

      Because your reply puts into evidence that you really missed the point.

  16. reinventing the wheel by pydev · · Score: 4, Interesting

    Microsoft should go back and read some of the literature on parallel computing from 20-30 years ago. Machines with many cores are nothing new. And Microsoft could have designed for it if they hadn't been busy re-implementing a bloated version of VMS.

    1. Re:reinventing the wheel by jhd · · Score: 1

      They already kissed and made up over Dave Cutler making NT a little too similar to VMS. See conclusion at and of article. http://everything2.com/title/The+similarities+between+VMS+and+Windows+NT

    2. Re:reinventing the wheel by Anonymous Coward · · Score: 0

      Yeah, the article gets some of the history correct. It seems, shall we say, a bit excessively positive on VMS and NT.

    3. Re:reinventing the wheel by Anonymous Coward · · Score: 0

      VMS was doing this shit (and more) 30 years ago.

    4. Re:reinventing the wheel by Anonymous Coward · · Score: 0

      "if they hadn't been busy re-implementing a bloated version of VMS"
      Bloated and incomplete. Your comment reminds me of a Vista launch event a couple, three years back that I went to.
      They showed the equivalent of $ SHOW DEVICE /FILE as the latest... available on VMS like forever and should have been part of NT 3.51 wayback when.
      What a waste of time.

    5. Re:reinventing the wheel by RightSaidFred99 · · Score: 1

      Yeah, because you heard 15 years ago that NT was "just VMS" that makes your knowledge, like, _totally_ relevant! Also, there is not a single person working in Microsoft's OS group who isn't twice as experienced, three times as intelligent, and doesn't make twice the money you do. But you keep on preaching!

    6. Re:reinventing the wheel by Anonymous Coward · · Score: 1, Informative

      Ok, I bet I get modded troll for this, but I so wish Windows WAS a bloated version of VMS.

      It would have a distributed lock manager, decent file type support and metadata, baked in security from the ground up, a scripting language that worked, logical names, a built-in flat database engine (RDB), a layered RDBMS (RDB), a distributed file system, clustering system that works with 100+ nodes, could be spread across different physical sites, contain mixed processor architectures, could do rolling upgrades, and could have recorded uptimes of 12 years+...

      Basically, Windows provides a bunch of services (win32 et al), that work suprisingly well for creating desktop applications, but can't really do most of the things that VMS can.

      On the other hand, there's a Windows PC on my desk, and a VAX, Alpha and Itanium in the server room, and that's the way it should stay! (Get off my lawn).

  17. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 0

    >For that matter when a copy or move fails in Explorer, why can't I simply resume it once I've fixed whatever the problem is...

    Agreed, I can't believe that's still a problem in Win7.

    However, you can get around it by just using the built-in RoboCopy instead of Explorer in situations where this is a potential problem. I'm sure there are also 3rd party GUI extensions that do the same thing but RoboCopy is good enough.

  18. Very weak presentation by gtoomey · · Score: 1

    This is a very weak talk to give at a University. Rather than talking about 'parallel programming' and adding an "It Sucks" button., I would expect a discussion on CSP http://en.wikipedia.org/wiki/Communicating_sequential_processes or perhaps real time hard to guarantee responsiveness. This is the indoctrination you get when you work for Microsoft, you start spruiking low-level marketing jumbo-jumbo to a very technical audience.

  19. 10^10 CPUs and I still have to wait ... by mi · · Score: 1

    ... for NFS to give up on a disconnected server... By the original design and the continuing default settings, the stuck processes are neither killable nor interruptible. You can reboot the whole system, but you can't kill one process.

    Hurray for the OS designers!

    --
    In Soviet Washington the swamp drains you.
  20. A more basic question by michaelmalak · · Score: 1
    I have a more basic question.

    With computers past and present -- Atari 8-bit, Atari ST, iPhone -- with "instant on", why does Windows not have this yet? This goes back to the lost decade. What has Microsoft been doing since XP was released?

    1. Re:A more basic question by ceoyoyo · · Score: 1

      XP had a suspend option, didn't it? And Vista and Windows 7 definitely do.

      Whether it works or not is another question.

    2. Re:A more basic question by hitmark · · Score: 1

      the ataris at least booted from rom, not HDD. This meant when power was cut, things returned to a known good state, as nothing was in the middle of writing (unless you had requested a save from whatever program you where working in).

      how iphone do it is less obvious, tho i suspect they leave much of the actual boot up to hardware, and also have said hardware return to known good states on a power loss. Also, it could be that iphone gives you the "desktop" before its actually done doing everything in the background. Heck, iirc apple have it show you a image of the apps interface that you just launched while loading the actual interface in the background, rather then some splash screen we all have come to know from some program or other. Basically, apple loves playing mind games to give the illusion things are happening one way, while its really happening some other way.

      also, different hardware do different things. If windows could basically tell the bios to take a hike and do the checks itself, rather then basically have the bios first check and then have windows do the same checks a second time, things would be much faster.

      all in all, much of the PC industry is held back by a "need" for backwards compatibility, to some degree or other, with that first IBM PC.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    3. Re:A more basic question by radish · · Score: 2, Informative

      iPhone isn't even slightly "instant on" - it takes at least a minute to boot an iPhone from off. What you're seeing most of the time is "screen off" mode. Unsurprisingly, switching the screen on & cranking up the CPU clock doesn't take much time. Likewise, waking my Windows box up from sleep doesn't take very long either. Comparing modern OS software running on modern hardware I see little difference in boot times, or wake time from sleep - which would indicate that if MS are being lazy then so are Apple & all the devs in the Linux & BSD worlds. As for why my ST used to boot so much quicker, well the lack of discs helped, as did the lack of hardware variance (and thus lack of drivers to load & start).

      --

      ---- Den ene knappen er powerknapp, den andre er Bender voice knapp "Bite My Shiny Metal Ass"

  21. Microkernel? by Enry · · Score: 1

    I'm not an OS designer, so I'll admit to possibly being wrong.

    Doesn't a microkernel split parts of the kernel into individual processes? In the case of a multicore system, different parts of the OS can be running on different cores at the same time. So inserting a CD doesn't cause the display to freeze, since each are running on a different core.

    1. Re:Microkernel? by MichaelSmith · · Score: 1

      I agree that a microkernel gives you architectural advantages, but I don't believe you should have to do that to avoid a display freeze when a CD is inserted.

    2. Re:Microkernel? by Anonymous Coward · · Score: 1, Interesting

      As someone who has tried to make Minix 3 suck less; microkernel doesn't imply well suited to multiprocessing, but it can help. Minix 3 for example, has disk drivers, network, filesystem etc as separate processes, but because so many operations depend on the file server, and the file server implementation is mostly synchronous and single threaded, IO will cause the entire system to appear to lock up. It would be possible to fix this of course, but it's not necessarily easy.

    3. Re:Microkernel? by Amanieu · · Score: 2, Interesting

      Actually most current monolithic kernels are multithreaded, so they can have one thread working on reading that CD, while another threads handles user input, etc. The only difference from microkernels is that it's all in a single address space.

  22. Re:Current architecture flawed but workable BUT... by Threni · · Score: 5, Insightful

    Windows explorer sucks. It always just abandons copies after a fail - even if you're moving thousands of files over a network. Yes, you're left wondering which files did/didn't make it. It's actually easier to sometimes copy all the files you want to shift locally, then move the copy, so that you can resume after a fail. It's laughable you have to do this, however.

    But it's not a concurrency issue, and neither, really, are the first 2 problems you mention. They're also down to Windows Explorer sucking.

  23. Re:Fist post! by Jeremi · · Score: 4, Funny

    I come to /. to read tech news... not so see people fisting.

    Well, I came here to see the fisting. And frankly, so far this site has been a real disappointment.

    --


    I don't care if it's 90,000 hectares. That lake was not my doing.
  24. 4096 processors not enough? by macemoneta · · Score: 1, Insightful

    The largest single system image I'm aware of runs Linux on a 4096 processor SGI machine with 17TB RAM. Maybe He means that Windows needs rework?

    --

    Can You Say Linux? I Knew That You Could.

    1. Re:4096 processors not enough? by shutdown+-p+now · · Score: 1

      The question isn't whether it's possible to have such a system or not. The question is, how efficiently are those 4096 processors utilized?

    2. Re:4096 processors not enough? by mswhippingboy · · Score: 1

      I believe the Jaguar - Cray XT5-HE has about 225,000 cores... IBM's BlueGene nearly 300,000 cores. Yea, give each app it's own CPU - then what do we do with the other 299,990 cores?

      --
      Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
    3. Re:4096 processors not enough? by Anonymous Coward · · Score: 0

      You realize that he is talking about multi-core systems not single-core, multi-processor systems?

    4. Re:4096 processors not enough? by wolrahnaes · · Score: 1

      The largest single system image I'm aware of runs Linux on a 4096 processor SGI machine with 17TB RAM. Maybe He means that Windows needs rework?

      I really want to see htop or some other visual display of current CPU/RAM usage running on that.

      --
      I used to get high on life, but I developed a tolerance. Now I need something stronger.
    5. Re:4096 processors not enough? by alexandreracine · · Score: 1

      Well, you'll probably see something along this: PID user .... CPU% MEM% xxx user1 ... 100% 0.1 xxx user2 ... 100% 0.1 xxx user4 ... 100% 0.1 about 3000 times... I was working for a research center for genomes and chromozones, and I created a high performance cluster with 3 high end servers with SGE. Nothing HUGE, but with tweking of those batch files and memory usage, they where getting results from 10% to 600% faster.

      --
      No sig for now.
    6. Re:4096 processors not enough? by FlyingBishop · · Score: 1

      I'm very skeptical of claims that an OS can make multicore problems more manageable. Most of the issues are I/O level, and those that aren't are too specialized for a general-purpose OS to aid all of them equally. You can come up with an OS that will make some things faster, but for the majority of problems, the standard paradigm will work better.

    7. Re:4096 processors not enough? by noidentity · · Score: 1

      The largest single system image I'm aware of runs Linux on a 4096 processor SGI machine with 17TB RAM. Maybe He means that Windows needs rework?

      640 cores should be enough for anybody.

    8. Re:4096 processors not enough? by Bigjeff5 · · Score: 1

      You're thinking too small. TFA's point was that the standard paradigm is a symptom of having too few CPU's to run all the applications we want, so we had to create an OS to split CPU time among the different applications (and then had to split OS time from application time, and then schedular time from OS time from application time, ad infinitum). The original computers ran a single application at a time, and nothing else. There was no operating system, you simply fed the properly formatted machine code into the computer and it ran it. The closest thing to an OS was the CPU's instruction set.

      Ironically, with the current paradigm, the more processors you have the more overhead there is managing the processors, so your gains fall off dramatically after about 8 cores. 8 cores is a little less than twice as powerful as 4 cores, and when you bump it up to 16 cores the gap shortens further. The GP's 4096 processors is less than double the power of 2048 processors by a huge margin, and that epitomizes the problem TFA is addressing. The original problem has been stood on its head, and we now have too many cores to deal with. All we really need to do is go back to having a single application run on a single processor, and make the OS's job simply to connect them all. With this type of architecture, 4096 processors truly would be twice as powerful as 2048 processors, which would be double 1024 processors, etc.

      Obviously, a change to an architecture like that would take a massive amount of work to bring it up to where we are now in terms of features in a modern OS, but I see the server virtualisation industry taking baby steps in this direction.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    9. Re:4096 processors not enough? by Anonymous Coward · · Score: 0

      "- Written for distributed memory architectures (MPI codes),allowing users access to up to 4,000 processors

      - Written for shared-memory architectures (OpenMP
      codes), with up to 256 processors accessible today in shared-memory mode,"

      That's from the very paper you linked. If I am understanding this correctly, the system only scales up to 256 processors. The 4000 number is really a distributed cluster. Windows already scales to 256 cores on a single box. Just thought you might want to know.

  25. Multithreading is the problem, not the answer by Anonymous Coward · · Score: 3, Interesting

    The Problem with Threads (UC Berkeley's Prof Edward Lee)
    How to Solve the Parallel Programming Crisis
    Half a Century of Crappy Computing

    The computer industry will have to wake up to reality sooner or later. We must reinvent the computer; there is no getting around this. The old paradigms from the 20th century do not work anymore because they were not designed for parallel processing.

    1. Re:Multithreading is the problem, not the answer by lennier · · Score: 2

      ++.

      In the 1980s there was lots of academic interest in parallel computing. Unfortunately a lot of it seemed to be driven merely by the quest for speed- once single CPUs got fast enough in the early 90s and everyone went 'whee C is good enough also objects are neat!', a whole generation of parallel language work was lost to the new&shiny.

      It's depressing.

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    2. Re:Multithreading is the problem, not the answer by Tablizer · · Score: 1

      More usage of RDBMS in applications could also potentially help because for the most part SQL statements don't dictate the order in which operations are done in. For a simple example, take "SELECT * FROM Foo WHERE x=3 AND y=2 AND z=7".

      If x, y, and z are indexed, then each index can be scanned in parallel to find the sub-matches. If they are not indexed, then table Foo can be split into 3 groups and each group searched in parallel. (It may also help if tables are split across multiple physical drives row-wise and column-wise.)

      However, it should be pointed out that existing RDBMS may not be currently optimized to take advantage of such.
         

    3. Re:Multithreading is the problem, not the answer by DaGoodBoy · · Score: 0, Troll

      Agreed. There are certain classes of problems for which threads provide an elegant solution, but it is not the answer for every problem. The same with Object Oriented techniques; they really help in some cases. Unfortunately, there is a tendency in our industry to treat whatever this years popular tool or developmental concept as some kind of panacea and everything that has gone before as some kind of remedial solution for technological dinosaurs.

      The truth is less cut and dried. UNIX philosophy still applies (small, discrete applications; clean interfaces; in separate process spaces), despite the inherited, object oriented model being in vogue. Threads are good for the kinds of parallel problems they solve, but you can't beat an straight-forward event loop for asynchronous performance and lack of obscure timing issues. Sometimes you just need an old fashioned FIFO for IPC, rather than some kind of sophisticated OS managed queuing system.

      I'm old, but I've seen a lot. Most problems I've found in software development design / architecture is someone with a degree using the latest college-taught solutions to solve real-world problems and inadvertently making them almost impossible to solve.

      --
      My God! It's full of Voids!
    4. Re:Multithreading is the problem, not the answer by ceoyoyo · · Score: 1

      Meh. The thread vs. process crusaders get all uptight. In reality both have their advantages and can be used almost interchangeably. Other arguments against threads usually boil down to not actually letting the programmer play with the threads directly, but abstracting them away in some form (which is not a bad idea, but is also not as revolutionary as some would like to think).

      If you've got multiple processors you need some way of parceling out work to them so any parallel processing machine is going to have something like threads or processes at it's basic level, just like any serial machine has instructions. Should crappy programmers be allowed to play with threads directly? Probably not, just like they shouldn't be allowed to program in assembly or use pointers.

    5. Re:Multithreading is the problem, not the answer by Raffaello · · Score: 1

      More usage of integer addition would also help because integer addition does not dictate the order in which operations are done. So we should limit everything that programmers are allowed to perform to integer additon - or SQL - whichever is more restrictive.

      In case the sarcasm isn't completely obvious, the challenge is to allow programmers to continue to program much as they do now while allowing the language runtime and/or OS to automatically parallelize as many tasks as possible with minimal additional explicit annotation by the programmer.

      Anyone can get great parallelism if we restrict all programs to what are known as embarrassingly parallel problems (by, for example, restricting programmers to the sorts of orthogonal selects parent mentions, or restricting programs to nothing but addition or other obviously commutative operations). Similarly, increased performance can be had by requiring the programmer to explicitly manage tasks, threads, mutex locks, sempahores, etc.

      The trick is to get the increased performance without either restricting programmer freedom on the one hand, and without burdening the programmer with explicit management of concurrency on the other.

    6. Re:Multithreading is the problem, not the answer by Ken_g6 · · Score: 1

      Well, that two-buffer thing is an interesting idea. I immediately see two problems with it.

      One, any instruction that writes to the second buffer "dirties" the data in the first. So you'd need to create an algorithm that goes through the code from a given point to some length, finds all instructions that aren't dirtied by any previous instruction, and then runs them. This, of course, is a serial process. It will also run into difficulties with conditionals and loops.

      And two, if the buffers are of any size, data locality starts to become an issue. Remember, processors have a limited number of registers. The farther out data is, the bigger the available space, but the slower the access. This is a hardware problem.

      I'd also like to point out that processors like Intel's Core series already do something kind of similar to this, having three ALUs and three memory access ports, which can all run in parallel from serial code, reordering it if necessary. Considering that Intel engineers have given up on adding more ALUs, I'd say this process has reached its limits.

      --
      (T>t && O(n)--) == sqrt(666)
    7. Re:Multithreading is the problem, not the answer by drsmithy · · Score: 1

      The old paradigms from the 20th century do not work anymore because they were not designed for parallel processing.

      The first multiprocessor machine appeared in 1961. Do you really think computer science hasn't changed since then ?

    8. Re:Multithreading is the problem, not the answer by Tablizer · · Score: 1

      But I'm not talking about a brand new language or completely changing techniques. To rely more on such is an incremental change leveraging what one already knows, at least in the biz domain. It may even leak over into say video games. That way one is not writing explicit loops to update 600 space cruzer statuses or whatnot in a multi-player game.

    9. Re:Multithreading is the problem, not the answer by gauauu · · Score: 1

      Why in the world was the parent marked as a troll? You might not agree with this guy, but this certainly isn't a troll...

      Where's my bucket of mod points when I need them?

  26. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 0

    For Windows 2K/XP You can use SuperCopier (http://supercopier.sfxteam.org/) It replaces the standard copy/move dialog with its own; supports pause/resume; can recover from most failures gracefully; not too bad.

    Doesn't support x64 but.

    Edit: Support is now there for Vista/7 and X64

  27. Re:Current architecture flawed but workable BUT... by The+MAZZTer · · Score: 1

    Often times Explorer will hang while waiting for I/O over the network to complete. Usually when I accidentally drag some files briefly over a folder symlinked to a network folder. Other times when I'm just scrolling down a list of folders on a remote machine I get lots of hitching. The drives are slow but this is really no excuse for the poor performance on THIS machine. This is Windows 7 btw.

  28. Re:Current architecture flawed but workable BUT... by The+MAZZTer · · Score: 1

    Power users use robocopy.exe to copy lots of files. Shows you progress without taking 5 minutes beforehand to count all the files first, automatically retries failed transfers, control over files to transfer or not based on name/size/date/etc criteria, support to sync or mirror folders, etc.

  29. Re:Current architecture flawed but workable BUT... by cdrnet · · Score: 0

    That's called transaction and is a good thing (except the part where it doesn't tell exactly why it failed). I'd hate if it would not behave like that.

  30. BeOS was doing it... by mister_playboy · · Score: 1

    BeOS was working on this well before multicore CPUs were the norm on the desktop and the level of responsiveness they managed on hardware that is stone-age tech by today's standard was extremely impressive. Haiku will be picking up where BeOS left off, but it's got a lot of catching up to do on the details, big and small, to become an everyday user's system.

    Yet another innovative player that Microsoft extinguished, and the whole tech world is worse off because of it. :(

    --
    Do what thou wilt shall be the whole of the Law ::: Love is the law, love under will
    1. Re:BeOS was doing it... by dfghjk · · Score: 1

      Microsoft did not extinguish BeOS, and BeOS's capabilities were also stone-age.

    2. Re:BeOS was doing it... by Anonymous Coward · · Score: 0

      No, microsoft's OEM deals and bootloader restrictions kept BeOS off computers. I can't name names (even if I am posting anonymously), but a big assembler were ready to sell a dual boot machine with windows and beos preinstalled. They changed their mind after a microsoft phone call.

    3. Re:BeOS was doing it... by Anonymous Coward · · Score: 0

      Only 1 reference in the comments to BeOS ? I thought Slashdot was "News for nerds"...

    4. Re:BeOS was doing it... by Anonymous Coward · · Score: 0

      Which explains why the other stone ager Apple hired the guy who came up with the Be File System to advance OS X into said stone age.

    5. Re:BeOS was doing it... by dunkelfalke · · Score: 1

      It was Apple that killed BeOS, not Microsoft.

      Initially designed to run on AT&T Hobbit-based hardware, BeOS was later modified to run on PowerPC-based processors: first Be's own systems, later Apple, Inc.'s PowerPC Reference Platform and Common Hardware Reference Platform, with the hope that Apple would purchase or license BeOS as a replacement for its then aging Mac OS Classic.[2] Apple CEO Gil Amelio started negotiations to buy Be Inc., but negotiations stalled when Be CEO Jean-Louis Gassée wanted $200 million; Apple was unwilling to offer any more than $125 million. Apple's board of directors decided NeXTSTEP was a better choice and purchased NeXT in 1996 for $429 million, bringing back Apple co-founder Steve Jobs.[3] To further complicate matters for Be, Apple refused to disclose certain architectural information about its G3 line of computers--information Be deemed critical to making BeOS work on the latest Apple hardware.

      --
      "It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
    6. Re:BeOS was doing it... by ^_^x · · Score: 1

      No... BeOS was the only thing that would let me use my P3-450 to play 25 MP3s at once... backwards. That OS was the closest thing I've used to actually getting all the performance out of my PC... and 11 years later, I'm still looking back on it wondering why we don't have anything else like it...

    7. Re:BeOS was doing it... by ^_^x · · Score: 1

      OEM deals? Certainly. Bootloader restrictions? Maybe on Compaqs? Or early Intel Apples? I'd never encountered a system at the time that wouldn't boot BeOS R5 i386.

  31. Duh by Waffle+Iron · · Score: 3, Funny

    Why should you ever, with all this parallel hardware, ever be waiting for your computer?'

    For a lot of problems, for the same reason that some guy who just married 8 brides will still have to wait for his baby.

    1. Re:Duh by Aphoxema · · Score: 1

      Why should you ever, with all this parallel hardware, ever be waiting for your computer?'

      For a lot of problems, for the same reason that some guy who just married 8 brides will still have to wait for his baby.

      Of course, he'll be able to get 8 babies at once, assuming none of the processes crash during the computation.

      --
      "Most people, I think, don't even know what a rootkit is, so why should they care about it?"
    2. Re:Duh by keeboo · · Score: 3, Insightful

      Why should you ever, with all this parallel hardware, ever be waiting for your computer?'

      For a lot of problems, for the same reason that some guy who just married 8 brides will still have to wait for his baby.

      Of course, he'll be able to get 8 babies at once, assuming none of the processes crash during the computation.

      That improves bandwidth, but not latency: almost 1 baby/month, but 9 months of latency.
      The guy could try interleaving the pregnancies, in order to get the illusion of lower latency.

    3. Re:Duh by BadOctopus · · Score: 1

      Why should you ever, with all this parallel hardware, ever be waiting for your computer?'

      For a lot of problems, for the same reason that some guy who just married 8 brides will still have to wait for his baby.

      Impotency?

      --
      You know, for kids.
    4. Re:Duh by Buelldozer · · Score: 1

      The computer is at the mall?

  32. Re:Current architecture flawed but workable BUT... by tux0r · · Score: 1

    I find Teracopy to be an excellent Windows copy dialog replacement. Gives you per-file and per-batch progress bars, better filename collision options, and a status list. Good from XP through to Win7.

    --
    ( Redundancy is ) ^ n
  33. The problem: the event-driven model by Animats · · Score: 4, Informative

    A big problem is the event-driven model of most user interfaces. Almost anything that needs to be done is placed on a serial event queue, which is then processed one event at a time. This prevents race conditions within the GUI, but at a high cost. Both the Mac and Windows started that way, and to a considerable extent, they still work that way. So any event which takes more time than expected stalls the whole event queue. There are attempts to fix this by having "background" processing for events known to be slow, but you have to know which ones are going to be slow in advance. Intermittently slow operations, like an DNS lookup or something which infrequently requires disk I/O, tend to be bottlenecks.

    Most languages still handle concurrency very badly. C and C++ are clueless about concurrency. Java and C# know a little about it. Erlang and Go take it more seriously, but are intended for server-side processing. So GUI programmers don't get much help from the language.

    In particular, in C and C++, there's locking, but there's no way within the language to even talk about which locks protect which data. Thus, concurrency can't be analyzed automatically. This has become a huge mess in C/C++, as more attributes ("mutable", "volatile", per-thread storage, etc.) have been bolted on to give some hints to the compiler. There's still race condition trouble between compilers and CPUs with long look-ahead and programs with heavy concurrency.

    We need better hard-compiled languages that don't punt on concurrency issues. C++ could potentially have been fixed, but the C++ committee is in denial about the problem; they're still in template la-la land, adding features few need and fewer will use correctly, rather than trying to do something about reliability issues. C# is only slightly better; Microsoft Research did some work on "Polyphonic C#", but nobody seems to use that. Yes, there are lots of obscure academic languages that address concurrency. Few are used in the real world.

    Game programmers have more of a clue in this area. They're used to designing software that has to keep the GUI not only updated but visually consistent, even if there are delays in getting data from some external source. Game developers think a lot about systems which look consistent at all times, and come gracefully into synchronization with outside data sources as the data catches up. Modern MMORPGs do far better at handling lag than browsers do. Game developers, though, assume they own most of the available compute resources; they're not trying to minimize CPU consumption so that other work can run. (Nor do they worry too much about not running down the battery, the other big constraint today.)

    Incidentally, modern tools for hardware design know far more about timing and concurrency than anything in the programming world. It's quite possible to deal with concurrency effectively. But you pay $100,000 per year per seat for the software tools used in modern CPU design.

    1. Re:The problem: the event-driven model by shutdown+-p+now · · Score: 4, Interesting

      This has become a huge mess in C/C++, as more attributes ("mutable", "volatile", per-thread storage, etc.) have been bolted on to give some hints to the compiler.

      An interesting comment overall, but what relevance does "mutable" have to multi-threaded programming? It is just a way to say that a particular field in a class is never const, even when the object itself is as a whole. There are no optimizations the compiler could possibly derive from that (in fact, if anything, it might make some optimizations non-applicable).

      Same goes for "volatile", actually. It forces the code generator to avoid caching values in registers etc, and always do direct memory reads & writes on every access to a given lvalue, but this won't prevent one core from not seeing a write done by another core - you need memory barriers for that, and ISO C++ "volatile" doesn't guarantee any (nor do any existing C++ implementations).

      Microsoft Research did some work on "Polyphonic C#" [psu.edu], but nobody seems to use that.

      It's a research language, not intended for production use. Microsoft Research does quite a few of those - e.g. Spec# (DbC), or C-omega (this is what Polyphonic C# evolved into), or Axum (the most recent take at concurrency, Erlang-style).

      Those projects are used to "cook" some idea to see if it's feasible, what approach is the best, and how it is taken by programmers. Eventually, features from those languages end up integrated into the mainstream ones - C# and VB. For example, X# became LINQ in .NET 3.5, and Spec# became Code Contracts in .NET 4.0. So, give it time.

    2. Re:The problem: the event-driven model by hitmark · · Score: 1

      using a mmorpg as an example vs a browser may be a bad example, as a browser have to download all data from the web, while the mmorpg have all data stored locally, and only changes in the scene is transmitted.

      Now comparing something like say gmail, once the interface was fully loaded, with a mmorpg may be more correct.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    3. Re:The problem: the event-driven model by foniksonik · · Score: 1

      On Macs you always could (well as far back as I go - OS 7.1) continue using the GUI while actions were taking place. This leads to the sometimes annoying but usually hilarious episodes where you accidentally open hundreds of files but then hit cmd+. to cancel all of your opens.. so you see a tiling of windows for a few seconds, then an untiling of windows for the next few seconds.

      In Windows this could never happen because it would only open the first file - then the PC would lock up and you'd have to just quit Explorer via Task Manager (which may actually be more productive - unless you actually do want to open hundreds of files... then you're screwed in Windows, it will never happen).

      .

      --
      A fool throws a stone into a well and a thousand sages can not remove it.
    4. Re:The problem: the event-driven model by michaelmuffin · · Score: 1

      Most languages still handle concurrency very badly. C and C++ are clueless about concurrency.

      c itself isn't aware of concurrency, but so what? that doesn't mean that a program written in c can't be aware of concurrency. for example, the bell labs thread library manages threads and procs and provides channels for locking and communication between them. the syntax can get clumsy if you aren't careful, but that's the only problem i can think of

      Go [... is] intended for server-side processing.

      what makes you think that? it's a general purpose language

      here's a ton of stuff that might interest you: http://swtch.com/~rsc/thread/

    5. Re:The problem: the event-driven model by EvanED · · Score: 1

      using a mmorpg as an example vs a browser may be a bad example, as a browser have to download all data from the web, while the mmorpg have all data stored locally, and only changes in the scene is transmitted.

      Data transfer is one thing; loading a page in one tab causing Pandora (in another tab) to stop playing for a few seconds while that page loads is another.

    6. Re:The problem: the event-driven model by lennier · · Score: 1

      A big problem is the event-driven model of most user interfaces. Almost anything that needs to be done is placed on a serial event queue, which is then processed one event at a time.

      This is an intriguing comment, so... In your opinion, how could we improve that? Some kind of 'event queue pipelining' feature which quickly scans events, guesses which ones might impact later ones which which ones won't, and then demultiplexes parallelisable events appropriately?

      Or would it be possible to block, say, graphical update events up into large chunks and feed them into a GPU vector processor?

      One thing which bugs me about the event-driven model in modern GUI frameworks is that for user code, it's next to impossible to get access to the raw event stream. You can create classes and signals/slots and register callbacks, and the framework 'does it all' for you. But I don't think these frameworks do nearly enough (or rather, they do too much; they don't allow themselves to be replaced by user code).

      It seems to me that to implement parallelism, we'd need to have software components which are able to do just that: parse the core event stream and reprocess or optimise them into parallel streams. We do this on a case-by case basis in, say, databases (where the query processor will optimise the query) - is it possible to provide this as a fundamental language feature?

      My impression is that we could achieve this with a very simple change: make the core event stream something like just a Lisp list. A sequence that can contain arbitrarily structured data. And then let all user code manipulate the event stream just like a stack language would manipulate the stack. Read huge blocks of it, put sub-streams into it, etc.

      At the moment about all a GUI object can do is grab an event or pass it on to a parent or delegate. But if we could upgrade our code to let it send events about events...

      Same thing with C/C++/Java having all these source-code-level modifiers and metadata markups which aren't readable or settable at runtime. I think this is a dead end; eventually all networked systems will end up as message-passing dynamic systems. All roads lead back to Lisp (or Smalltalk), but we're taking a lot of byways to get there.

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    7. Re:The problem: the event-driven model by lennier · · Score: 1

      c itself isn't aware of concurrency, but so what? that doesn't mean that a program written in c can't be aware of concurrency.

      It doesn't mean it can't be aware, but it does mean that it will be fighting the language's inclination to be unaware, and that means the programmer is likely to make many more mistakes. It would be nice to have tools that we didn't have to fight.

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    8. Re:The problem: the event-driven model by Animats · · Score: 2, Informative

      An interesting comment overall, but what relevance does "mutable" have to multi-threaded programming?

      A "const" object can be accessed simultaneously from multiple threads without locking, other than against deletion. A "mutable const" object cannot; while it is "logically const", its internal representation may change (it might be cached or compressed) and thus requires locking.

      Failure to realize this results in programs with race conditions.

    9. Re:The problem: the event-driven model by shutdown+-p+now · · Score: 1

      A "const" object can be accessed simultaneously from multiple threads without locking, other than against deletion

      Not always, since an aliased const value is only const from the point of view of that particular alias (i.e. pointer / reference), If the value isn't "originally const", then another thread, or even the same thread, can still change it via a different name, and those changes must be seen via all aliases, const or not. E.g.:

      int foo(const int& x, int& y) {
        y++;
        return x;
      }
       
      int x = 1;
      foo(x); // must return 2!

      In practice, const is much more often seen combined with pointers and references in C++, rather than plain values. An orthogonal concept, something like D's "immutable", that indicates that the value will really never change - not by this thread/function, and not by anyone else - would be more useful there. Even C99 "restrict" would help a lot.

      A "mutable const" object cannot; while it is "logically const", its internal representation may change (it might be cached or compressed) and thus requires locking.

      Do you know of any existing C++ compiler that does automatic parallelization on fully const objects?

    10. Re:The problem: the event-driven model by IamTheRealMike · · Score: 1

      In particular, in C and C++, there's locking, but there's no way within the language to even talk about which locks protect which data.

      That's true of standard C++. However GCC has thread safety annotations. We use them at work, they're pretty handy.

    11. Re:The problem: the event-driven model by IamTheRealMike · · Score: 1

      Unfortunately that's not really true. A const method in c++ can still tweak state it reaches through internal pointers. Const is actually pretty useless in C++ .... it doesn't help with optimization nor multi-threading. A real const system is what you can find in the D2 language.

    12. Re:The problem: the event-driven model by LingNoi · · Score: 1

      You could (from a user perspective) increase the illusion of page load times by rendering the stuff that the browser determines is on every page. For example, slashdot pages have the same structure on almost every page. I can't see a reason why a browser (after a few page views) couldn't evaluate which parts of a site aren't dynamic and render those while the real page actually loads up. With HTML5 you could extend this further by just changing the data in certain tags.

      You might have problems with pages which are completely different but it's worth giving it a try and see the results of using a browser that can do this.

    13. Re:The problem: the event-driven model by TuringTest · · Score: 1

      A good model to program GUIs is the hierarchical state machine, which resembles the solution you suggest but in a much more controlled, less error-prone way. It's like a high-level approach to your low-level "arbitrary Lisp list of events".

      HSMs basically allow you to state the relations between all the different parts of your interface as their context change, so that independent events can be truly be handled in parallel. The best thing is that you can centralize the main application flow in one place in advance with a simple model, delegating just the specific details local to a particular widget to be written later. See these slides for an introduction.

      --
      Singularity: a belief in the "God" idea with the "demiurge" relation inverted.
    14. Re:The problem: the event-driven model by thesuperbigfrog · · Score: 3, Interesting

      Most languages still handle concurrency very badly. C and C++ are clueless about concurrency. Java and C# know a little about it. Erlang and Go take it more seriously, but are intended for server-side processing. So GUI programmers don't get much help from the language.

      In particular, in C and C++, there's locking, but there's no way within the language to even talk about which locks protect which data. Thus, concurrency can't be analyzed automatically. This has become a huge mess in C/C++, as more attributes ("mutable", "volatile", per-thread storage, etc.) have been bolted on to give some hints to the compiler. There's still race condition trouble between compilers and CPUs with long look-ahead and programs with heavy concurrency.

      We need better hard-compiled languages that don't punt on concurrency issues. C++ could potentially have been fixed, but the C++ committee is in denial about the problem; they're still in template la-la land, adding features few need and fewer will use correctly, rather than trying to do something about reliability issues. C# is only slightly better; Microsoft Research did some work on "Polyphonic C#", but nobody seems to use that. Yes, there are lots of obscure academic languages that address concurrency. Few are used in the real world.

      Ada 2005's task model is a real world, production quality approach to include concurrency in a hard-compiled language. Ada isn't exactly known for its GUI libraries (there is GtkAda), but it could be used as a foundation for an improved concurrent GUI paradigm.

      This book covers the subject quite well.

      --
      42
    15. Re:The problem: the event-driven model by hitmark · · Score: 1

      thats mostly a firefox/IE(/safari?) issue no? chrome separates each tab, and plugin, as its own task, iirc.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    16. Re:The problem: the event-driven model by EvanED · · Score: 1

      thats mostly a firefox/IE(/safari?) issue no? chrome separates each tab, and plugin, as its own task, iirc.

      It's entirely possible that it would work better in Chome (I refuse to/don't use Chrome for a couple reasons), but that's sorta the point... it is possible to write an efficient web browser, but that doesn't mean most of them are.

    17. Re:The problem: the event-driven model by Animats · · Score: 1

      Do you know of any existing C++ compiler that does automatic parallelization on fully const objects?

      The state of the art isn't very good. Even Unified Parallel C doesn't trust "const". It requires the "shared" attribute on "const" objects. UPC, unfortunately, punts on synchronization. "Which lock locks which data" is unknown to the language. UPC is really a migration path for supercomputer number-crunching jobs previously written in parallel dialects of FORTRAN. The big change in UPC is that data is thread-local by default. UPC is primarily for machines where some, but not all, memory is shared between processors. This is typical of larger supercomputers today. Typically, there isn't a large volume of parallel code in programs; it's the inner loops of big number-crunching programs that are highly parallel.

      The Cell CPU in the PS3 falls into this category. The Cell architecture has been of limited use so far, because there's so little local memory. There's only 256KB (not MB) per CPU. IBM gave up on the Cell line in late 2009. When we see multicore CPUs with, say, 16MB of local memory per CPU plus slower access to shared memory, they might be more useful.

      There's something to be said for the concept that data is, by default, thread-local.

    18. Re:The problem: the event-driven model by Animats · · Score: 1

      That's true of standard C++. However GCC has thread safety annotations. We use them at work, they're pretty handy.

      That's new, and it's a big step in the right direction. But "annotations" that don't do anything aren't that useful. If there's something that checks them, and it does more than produce "warnings", then you've got something. You need to be able to detect all potential race conditions at compile time.

    19. Re:The problem: the event-driven model by Anonymous Coward · · Score: 0

      The problem lies with the programmer, not the language (BTW, for a real programmer nowadays, C is the only choice).

  34. Re:Current architecture flawed but workable BUT... by Kenz0r · · Score: 4, Insightful

    I wish I could mod you higher than +5, you just summed up some of the things that bother me most about the OS that is somehow still the most popular desktop OS in the world.

    To anyone using Windows (XP, Vista or 7) right now, go ahead and open up an Explorer window, and type in ftp:// followed by any url.
    Even when it's a name that obviously won't resolve, or an ip of your very own local network of a machine that just doesn't exist, this'll hang your Explorer window for a couple of solid seconds. If you're a truly patient person, try doing that with a name that does resolve, like ftp://microsoft.com . Better yet, try stopping it.... say goodbye to your explorer.exe .

    This is one of the worst user experiences possible, all for a mundane task like using ftp. And this has been present in Windows for what, a decade?

    --
    +1 Funny Signature
  35. Re:Current architecture flawed but workable BUT... by shoehornjob · · Score: 1

    AAH you must be using Vista (the disfunctioal redneck of operating systems). Some of this was actually fixed (gasp) in Windows 7. I'm still amazed that stuff actually works. For example, If you use the search panel at the bottom of the start menu it actually finds the program you want without going through a bunch of useless menu's. This is especially helpful to me as I support a bunch of end users that don't know their computer. If you get a 404 error sometimes the "diagnose" button actually will restore your connection. I've even seen it recover from a 169. ip address (kiss of death for tech support). Anyway, get Win 7 and you'll be happy.

    --
    "We are just a war away from Amerikastan. When god vs god the undoing of man." Dave Mustaine
  36. McVoy's foresight by Anonymous Coward · · Score: 0

    Larry McVoy argued for a pretty fundamental shift about 7 years ago. Think what you will of the guy and his company, I'm just saying...

    Sadly, I can not find a link right now.

  37. The way computers operate is to blame by master_p · · Score: 1

    The real reason behind the problem is that the way a computer operates is totally inappropriate for parallelism. The concept of data moving through a bus to a proccessing core is totally at odds with parallelism.
    We do see tremendous parallelism around us. Why? Because, in the real world, there is no bus to move the data over, and there is no central core! In the real world, each object is its own cpu! If reality was like a computer, all objects would have to be moved to a special place in order to be processed!
    If we could take a hint from nature...in our bodies, it's not data that are moved around, it's commands that travel on our "buses", i.e. our nervous system!

    1. Re:The way computers operate is to blame by hitmark · · Score: 1

      so lets replace CPU with FPGA?

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    2. Re:The way computers operate is to blame by ZosX · · Score: 1

      I don't think you can get away from this mode of operation. The way a computer's internals are stacked is basically vertical with the processor on top. Between the processor you have the BUS and then the RAM and the I/O that feeds to the BIOS and the rest of the board. With RAM and FSB speeds exceeding 1ghz you still have a sizable barrier when talking to a 2-3ghz processor. Clearly part of the solution is to dump all kinds of cache next to the CPU (L1), but that costs a great deal and adds to the silicon used. My processor has something like 512kb per core. I think the newer athlons have 1-2mb per core. Compared to a 486 at 16k that is a huge increase in cache. Its not really the computer, nor is it the way SMP is designed to work. The problem is really the programming. A lot of tasks just don't scale well. The bulk of your processing in a data intensive task is still going to fall to some thread that simply can't be split easily. Tasks that you can break into workable chunks are ideal for parallelism. Video encoding....file compression....image processing....data sorting....but there are so many things that are hard to effectively multithread. Rendering HTML for instance. Sure you can throw each tab in a thread, and that would be a nice improvement, but at the same time I don't see how you could effectively thread out a render. Software will eventually start taking advantage of more cores and then some of the inherent problems in how smp is implemented will eventually rear their ugly heads (which is what I *think* the article is about....like I RTFA or anything LOL) but I think we have to get beyond quad cores and start seeing software that actually starts utilizing more than one core effectively. I have a quad core I use at work and most of the time only a single cpu or maybe two is ever pegged. I quite honestly can't think of what I would need an 8 core machine for and I use photoshop all day which should be software that is fairly demanding. The 2 cores in my laptop really feel like more than enough for just about any task I can throw at it. Coming from years and years of single cpu machines, having 2+ cores certainly makes things a lot more snappier.

    3. Re:The way computers operate is to blame by LingNoi · · Score: 1

      I don't see a problem with rendering HTML in a multi threaded way. You could do it simply by the top level tags. For example, a page I am current viewing has one div with 6 divs inside it. So render the first div and once it is done split the next 6 divs up into threads.

      Granted its more difficult them I am describing however still very possible.

    4. Re:The way computers operate is to blame by TheSunborn · · Score: 1

      There are 2 problems with that.

      1: Only the main thread(The first thread which first created a window) can do any kind of graphics operations so even if you have 6 threads to look at the div tags, each thread need to serialize the result and then pass the result to the gui thread which can then do the drawing. So not much is gained with multi threading here.

      2: Javascript - just try to imagine what happens if a javascript running in a different thread, is doing dom manipulation which effect the different div tags while the other threads are reading them. You will need so much locking that the overhead will kill the performance.

      The only way I see to speed up handling of a single html document, would be to use a new thread to decode each image. That would gain quite some performance while avoiding all the multi threading problems. (Just let the thread decode the image to shared memory and then send a message back to the gui thread when its done).

    5. Re:The way computers operate is to blame by Anonymous Coward · · Score: 0

      what about our blood circulatory and digestive systems.
      they are busses that move data (to be processed food and blood) to their appropriate places
      a normal cell cannot perform the functions of a renal cell just like a sperm cell cannot combat diseases like
      a white bloodcell, so the analogy of every object being a cpu is wrong, they are ASIC's or DSP's at best.

    6. Re:The way computers operate is to blame by drinkypoo · · Score: 1

      If we could take a hint from nature...in our bodies, it's not data that are moved around, it's commands that travel on our "buses", i.e. our nervous system!

      We have only about half a clue as to what is going on in our brains and you want to talk about data or commands. In reality, it's neither; your entire nervous system is engaged in processing. Your "nerves" don't just relay commands. They affect what they carry.

      In any case, there is a comparison here to be drawn between different computing architectures. Starting with the transputer we had the concept of an entirely non-uniform multiprocessor system with many parallel links. And today, AMD systems in common use have only certain choke points (e.g. between the processors and the peripherals, but not between processors and memory) and are NUMA as well. Further, peripheral cards in computers like RAID controllers or (obviously) graphics adapters with powerful GPUs represent an inherently distributed computing model where minimal data is sent over the bus; textures go to the video card, but from there only instructions on what to do with them will be transferred. Isn't that what you're talking about?

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  38. Clearly this is a windows issue to note... by 3seas · · Score: 1

    ....for those buying Windows 7.

    As is this not an admittance of Microsoft continued failure to properly support the hardware it runs on?

    I joke at work that the reason I have to select tools twice sometimes in autocad is because the dual processors are figuring the other processor is doing it, but when I pick the tool twice, they run out of excuses and do it...mostly.

    Now I know ....its not a joke....

    1. Re:Clearly this is a windows issue to note... by Bigjeff5 · · Score: 1

      And what OS would you replace it with, given that Linux, OSX, Unix, and all other OS's have the exact same problem?

      If you had read the the article, you'd realize there is nothing windows specific in it. He is talking about the underlying architecture of ALL operating systems that is the problem, and it stems from the very first time it was decided that a CPU should run more than one program at a time.

      I joke at work that the reason I have to select tools twice sometimes in autocad is because the dual processors are figuring the other processor is doing it, but when I pick the tool twice, they run out of excuses and do it...mostly.

      The reason you have to select tools twice is because autocad is waiting for its turn at a CPU. That's exactly what the article is about, and if you'd read a little before posting you wouldn't look like a dumbass who hates Windows because it's popular to hate windows. If Linux were better* you'd be using it. If Apple were better* you'd be using it. The fact is, they aren't better at this than Windows, and in fact, Windows 7 is as good or better at it than anything on the market.

      *Note that there are a whole host criteria that go into "better", most of which you'll ignore when you piss and moan about Linux or Apple being better. They aren't. They may not be worse, but they definitely aren't better.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
  39. Re:Current architecture flawed but workable BUT... by drsmithy · · Score: 2, Informative

    For that matter when a copy or move fails in Explorer, why can't I simply resume it once I've fixed whatever the problem is.

    You can as of Vista.

  40. Would Plan 9 suite the bill? by MagikSlinger · · Score: 1

    Plan 9 was designed around the idea of completely separate processes that could be running on separate CPUs. Why not start there?

    --
    The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
  41. Re:Current architecture flawed but workable BUT... by Threni · · Score: 1

    I use it sometimes, but usually I can't be bothered. I'd like that functionality without having to use the command line (especially seeing as I'm usually using it to copy deep within one mapped drive to another). Also, I seem to often be on old boxes which don't have NT4 service pack 3 with NT utilities v3 sp2 or wherever the hell it was hidden before it became easier to find.

  42. Dumb post from someone who doesn't program by judeancodersfront · · Score: 1

    So programmers were dumb for designing an OS that was built around existing hardware and still meets the needs of most software users? Wow that was really dumb of them to design an OS that would be have been useless then and only useful to about 1% of the population today. For consumer multitasking a dual core and Windows 7 is plenty responsive. The gains from this theoretical OS would be imperceptible to most.

    1. Re:Dumb post from someone who doesn't program by Sarten-X · · Score: 1

      I'm not referring to the OS programmers. I think that, like you said, the gains from a different OS would be imperceptible. I believe the limiting factor is the capabilities of applications, which are generally not designed to take advantage of any kind of parallel system, no matter how scheduling/allocating is handled.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    2. Re:Dumb post from someone who doesn't program by Anonymous Coward · · Score: 0

      The reason why software doesn't take advantage of parallelization is because the OS, the programming language and most of the libraries out there pretty much suck at making parallel programming easy. When the parallel solution is orders of magnitude more complicated then the serial one, it's no surprise that nobody is doing it the parallel way.

  43. Re:Current architecture flawed but workable BUT... by Threni · · Score: 1

    No, it's not a transaction (it doesn't tidy up after a fail) - just regular shitty Windows behaviour when a file copy fails to complete. You must never use Windows or you'd not have posted that comment (although I suppose you might be one of the lucky ones who've never had a copy fail because of a lack of disk space, transient network failure etc).

  44. Windows Server 08 scales to 256 cores by judeancodersfront · · Score: 1

    The article is about gaining even greater power from multicore systems by redesigning the OS.

  45. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 0

    UI responsiveness issues have more to do with crappy software and flawed legacy windows APIs (ahhmm DDE) waiting for I/Os from network, naming services, disk drives..etc. It really has nothing to do with CPU limited activities or SMP aware operations in your typical desktop workstation.

    If you want your home PC to be faster your best bang for the money is to purchase more memory not faster disk drives or faster processors.

    WRT HPC at some point SMP simply does not scale because of memory/cache coherency requirements...kernel codes of insert your favorite operating system here can't work around fundemental lack of available memory bandwidth.

    Thats why we have NUMA and believe it or not windows supports NUMA. Unfortunately if you thought writing SMP applications was difficult when you have to consider the locality of memory you access in your algorithms things really start to suck quick.

    The only solution that I know of is to have smart programming languages which auto-parallelize and auto-optimize codes because people hate doing such things themselves.

  46. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 0

    One of the problems is how they implement concurrency. One approach is to have multiple threads of execution and some common area used to synchronize all these threads. Because it would lead to havoc if any thread could write to the common area, there's a locking system in place. Think of it like a key that you hang on a door. When you need to enter the room, you unlock the door then take the key with you. When you're done, you hang the key back on the door. If you don't do it right you can have a queue form outside the door.

    What happens in many cases is that a single thread is locking that common area. The system hangs while that common area is locked. In many cases this happens because of I/O. If your I/O subsystem cannot properly keep up with multiple requests you can have major bottlenecks. Now, you certainly don't want writes and reads to occur in the wrong order so you make sure that any process that needs to perform I/O is essentially serialized. Sometimes the OS has no control over it. Maybe it's sending out requests to a piece of hardware and the hardware is just taking a long time.

    But we certainly should rethink how we do certain things. Databases figured out certain ways to maintain consistency and maintain performance (in most cases). Maybe we need to approach filesystems as a big database (and there have been attempts before to do this). Imagine a filesystem containing millions of separate files. In a traditional filesystem this can cause performance nightmares, but any reasonably modern database can handle millions of rows with ease. An 'ls' in such a filesystem might use a select. A 'find . -name "foo.*.bar"' would just be a select. Underneath this, multiple threads could work on multiple levels to return results.

  47. Re:Current architecture flawed but workable BUT... by hitmark · · Score: 2, Insightful

    or basically replaces windows with something else.

    --
    comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
  48. Re:Current architecture flawed but workable BUT... by NatasRevol · · Score: 2, Informative

    Transaction is copying some files, failing in the middle, and not rolling back those copied over??

    Hint. It's not transaction. It's just a bad piece of software that fails badly at doing it's basic job. Handling files.

    --
    There are two types of people in the world: Those who crave closure
  49. Re:Current architecture flawed but workable BUT... by kramulous · · Score: 1

    From the article:

    Today's typical desktop computer runs multiple programs at once, playing music while the user writes an e-mail and surfs the Web, for instance.

    "Responsiveness really is king," he said. "This is what people want."

    If you can't get those few programs right on a single core, you are going to really suck at getting them going properly on more cores.

    I realise M$ don't have much control over the third party programs but if they use a core to study the instruction loading/unloading patterns, cache/memory access patterns, etc of the core doing the work and self optimise that then they may have a chance.

    --
    .
  50. OSX is no more responsive than Windows by judeancodersfront · · Score: 2, Insightful

    The author is talking about a complete OS redesign, not a new threading system.

    1. Re:OSX is no more responsive than Windows by Jane+Q.+Public · · Score: 0

      Responsiveness is not the issue. At least not yet. The issue is who does the thread management, the programmer or the OS? The problem is that as more cores come along, the harder it will be for the programmer to manage it, to the point (very soon already) of impracticality. It MUST be done by the OS, sooner or later. And it will get better with time. Apple opted for sooner. Windows will have it... when?

    2. Re:OSX is no more responsive than Windows by adonoman · · Score: 1

      The issue is not getting the programmer to use this library or that library, but to get the programmer to do speculative pre-calculations with all the unused cores. Picture viewers do this already - while I'm looking at one picture, load up the next one, so that when I advance, it's almost instantaneous. If you're in a spot where the user can choose N possible outcomes, start out processing the most likely choices before they make the decision and discard the results you don't care about once the user makes the choice.

    3. Re:OSX is no more responsive than Windows by exomondo · · Score: 2, Insightful

      The issue is who does the thread management, the programmer or the OS?

      The issue is working out how to break up inherently serial problems into smaller parallel problems. Threading is not difficult, the difficulty comes in parallelising the problem and this must be done regardless of who does the thread management.

    4. Re:OSX is no more responsive than Windows by Jane+Q.+Public · · Score: 0

      "Threading is not difficult, the difficulty comes in parallelising the problem and this must be done regardless of who does the thread management."

      No, the problem is synchronization. Threading is not difficult if you don't need or don't care about synchronization, but odds are that if you aren't paying attention to that you aren't really getting performance out of your threading. And most either don't pay sufficient attention or don't know how.

    5. Re:OSX is no more responsive than Windows by exomondo · · Score: 1

      "Threading is not difficult, the difficulty comes in parallelising the problem and this must be done regardless of who does the thread management." No, the problem is synchronization. Threading is not difficult if you don't need or don't care about synchronization, but odds are that if you aren't paying attention to that you aren't really getting performance out of your threading. And most either don't pay sufficient attention or don't know how.

      And of course the synchronization part is where the parallel-ized parts of the problem come together. Hence it is the actual splitting of the problem into parallel parts that is the difficult part, the actual implementation of synchronization is easy if you have designed a well parallel-ized application, but that design is the very difficult part.

      Once you have your well-designed parallel-ized version of your problem what is the difficulty you're having with synchronization?

  51. My experience with multicore is linux... by Teunis · · Score: 1

    Linux: 2 cores = 2 times faster, usually. And so forth... it's had scalable multicore/multiprocessor support for years.
    Windows: extra core means 10% of programs are faster. So I very much confirm windows needs a rewrite for this.

    Now some specific apps under linux still need work - but only if they are resource hogs. The only programs I've run into problems with this with of late are firefox (I'm now mostly running chrome - which is far smoother), thunderbird and - possibly - the X server itself. (I've looked into X server code though - it looks like it's now set to scale)

    I can't say anything about BSD or MacOSX as I've never run either on a multicore system. For MacOSX though I'd wager that if it isn't already up to par - it will be. The OSX and even NextStep GUIs are designed to scale.

  52. always trying to have it both ways by pydev · · Score: 1

    So you are basically saying: "It already scales perfectly to hugely parallel machines, so don't bother buying anything else, but in a couple of years, it will scale even more perfectly."

    Give me a break. The NT kernel was never meant or designed for this kind of parallelism; other operating systems were.

  53. Re:Current architecture flawed but workable BUT... by Jeff+Carr · · Score: 1

    I made the mistake of moving a massive amount of files from one server to another with teracopy. When the move failed due to a dropped network connection, teracopy deleted all of the files in the queue, including those that it had failed to copy to the server.

    --
    The television will not be revolutionized.
  54. You don't need a microkernel for that by mattdm · · Score: 1

    You don't even need one which can run in different threads. You just need one which can flag various tasks as "uh, come back to that in a bit", and then very quickly go to the next thing on the list.

  55. Re:Fist post! by omfgnosis · · Score: 4, Funny

    That's actually pretty good typing with your fists. Do you have a comically large keyboard?

  56. Microsoft's slowness and Windows 2005 by gig · · Score: 5, Insightful

    I love how Microsoft can come along in 2010 and with a straight face say it's about time they took multiprocessing seriously. Or say it's about time we started putting HTML5 features into our browser. And we're finally going to support the ISO audio video standard from 2002. And by the way, it's about time we let you know that our answer to the 2007 iPhone will be shipping in 2011. And look how great it is that we just got 10% of our platform modernized off the 2001 XP version! And our office suite is just about ready to discover that the World Wide Web exists. It's like they are in a time warp.

    I know they have product managers instead of product designers, and so have to crib design from the rest of the industry, necessitating them to be years behind, but on engineering stuff like multiprocessing, you expect them to at least have read the memo from Intel in 2005 about single cores not scaling and how the future was going to be 128 core chips before you know it.

    I guess when you recognize that Windows Vista was really Windows 2003 and Windows 7 is really Windows 2005 then it makes some sense. It really is time for them to start taking multiprocessing seriously.

    I am so glad I stopped using their products in 1999.

    1. Re:Microsoft's slowness and Windows 2005 by Anonymous Coward · · Score: 1

      I am so glad I stopped using their products in 1999.

      Nice to know you speak from experience.

    2. Re:Microsoft's slowness and Windows 2005 by dafing · · Score: 1

      the first genuine LOL of the week, (it is monday mind you). Thank you.

      --
      --- ...or a new slashdot signature. Dear aunt, let's set so double the killer delete select all
    3. Re:Microsoft's slowness and Windows 2005 by RMS+Eats+Toejam · · Score: 2, Funny

      I am so glad I stopped using their products in 1999.

      But you are still an asshole 11 years later! What gives?

      --
      Turning to a Linux advocate for thoughts on Microsoft is like asking Hitler how he felt about the Jews.
    4. Re:Microsoft's slowness and Windows 2005 by jim_v2000 · · Score: 1

      ZING

      --
      Don't take life so seriously. No one makes it out alive.
    5. Re:Microsoft's slowness and Windows 2005 by Techman83 · · Score: 1

      If only I had mod points, this certainly isn't funny, but sadly it should be insightful.

      --
      # cat /dev/mem | strings | grep -i cat
      Damn, my RAM is full of cats. MEOW!!
    6. Re:Microsoft's slowness and Windows 2005 by maweki · · Score: 1

      I loved the multi-threading and parallelism in Windows ME. Your Explorer.exe could crack and become unresponsive while your filesystem was being corrupted and that was all happening while Windows was preparing a bluescreen. I really missed that in XP. There, this would all happen one thing at a time (but you were sure as hell it would happen). I sometimes miss this kind of certainty on my Linux desktop.

    7. Re:Microsoft's slowness and Windows 2005 by radish · · Score: 1

      So which OS are you using now which is so radically different from Windows in how it handles multi-core processors?

      --

      ---- Den ene knappen er powerknapp, den andre er Bender voice knapp "Bite My Shiny Metal Ass"

    8. Re:Microsoft's slowness and Windows 2005 by juasko · · Score: 1

      If spelling out facts equals to beeing an asshole then yes he is, and I hope the world had more assholes.

  57. Is this coming to Linux? by Torrance · · Score: 1

    A little off-topic, but I was wondering if anyone knows if a GrandCentral clone may be coming to Linux?

    I know FreeBSD has integrated libdispatch into their kernel, but due to licensing issues this can't be done with the Linux kernel.

  58. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 1, Informative

    In windows Vista and 7 file copy is improved to avoid these problem, fyi.

  59. The bottleneck is hardware i/o by judeancodersfront · · Score: 1

    Most software sits and waits for a user response or data from a device. It's a tiny minority of software that can make use of multi-threading. Programs like AutoCad and Photoshop already do.

  60. Re:Current architecture flawed but workable BUT... by bertok · · Score: 1

    ...the implementation sucks.

    Why for example does Windows Explorer decide to freeze ALL network connections when a single URN isn't quickly resolved? Why is it that when my USB drive wakes up, all explorer windows freeze? If you are trying to tell me there's no way using the current abstractions to implement this I say you're mad. For that matter when a copy or move fails in Explorer, why can't I simply resume it once I've fixed whatever the problem is. You're left piecing together what has and hasn't been moved. File requests make up a good deal of what we're waiting for. It's not the bus or the drives that are usually the limitation. It's the shitty coding. I can live with a hit at startup. I can live with delays if I have to eat into swap. But I'm sick and tired of basic functionality being missing or broken.

    That's because most Windows applications are written in C/C++, and it would be a royal pain to make them asynchronous.

    People confuse "multi-threaded" and "asynchronous". They mean almost the same thing, but there's a substantial difference in development styles. Multi-threaded (or "multi-core") is usually when an algorithm is split to run parallel across 'n' threads, asynchronous is when a program does something in the background without blocking. The former is actually quite easy in C/C++, the latter is very hard, because tracking memory ownership across a bunch of threads is a huge pain. It would help a lot if the core Windows user-space apps were re-written in a managed language like C# so that they could use asynchronous code heavily without the developers twisting their brains into knots.

    What doesn't help matters is that Microsoft's multi-threading APIs and libraries have been terrible since forever, and their new push towards multi-threaded programming has been to polish the turd a little. They just don't seem to have smart guys working for them any more who can design something as complex as a general purpose multi-threading library (akin to OSX's "Grand Central Dispatch"). I've seen Microsoft's weak attempt at it in .NET 4, and it's just... sad.

  61. Re:Current architecture flawed but workable BUT... by hitmark · · Score: 2, Interesting

    there is a option, at least as far back as xp that allows explorer windows to run as their own tasks. Why its not enabled by default i have no clue about (except that i have seen some issues with custom icons when doing so).

    --
    comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
  62. Most software doesn't need to be multi-threaded by judeancodersfront · · Score: 1

    You'd just be completing tasks faster that were never causing the program to appear slow in the first place. Complex games and heavy apps like internet browsers need to be multi-threaded but not your typical business or consumer application when the typical laptop has a 2.0 ghz dual core cpu.

    1. Re:Most software doesn't need to be multi-threaded by Sarten-X · · Score: 1

      This is why I complain about shiny interfaces specifically. Interfaces have become shinier everywhere, and often at the expense of response times. For 'modern' programs using images for an interface, on a moderately old system, it's not uncommon to have a noticeable delay as the interface renders. Yes, some of that is waiting for I/O to fetch the images from disk, but that could all be avoided if shiny displays were pushed off into a separate thread, or avoided altogether.

      --
      You do not have a moral or legal right to do absolutely anything you want.
  63. Ass Backward, Sorry by Anonymous Coward · · Score: 0

    On the contrary, everything in software should be event driven, down to the individual instructions. That is true parallelism, the future of computing.

    Half a Century of Crappy Computing

  64. Reminds me of the Cache Kernel. by Grenamier · · Score: 2, Interesting

    The part of the article where Probert discusses the operating system becoming something like a hypervisor reminds me of the Cache Kernel from a Stanford University paper back in 1994. http://www-dsg.stanford.edu/papers/cachekernel/main.html

    The way I understand it, the cache kernel in kernel mode doesn't really have built-in policy for traditional OS tasks like scheduing or resource management. It just serves as a cache for loading and unloading for things like addresses spaces and threads and making them active. The policy for working with these things comes from separate application kernels in user mode and kernel objects that are loaded by the cache kernel.

    There's also a 1997 MIT paper on exokernels (http://pdos.csail.mit.edu/papers/exo-sosp97/exo-sosp97.html). The idea is separating the responsibility of management from the responsibility of protection. The exokernel knows how to protect resources and the application knows how to make them sing. In the paper, they build a webserver on this architecture and it performs very well.

    Both of these papers have research operating systems that demonstate specialized "native" applications running alongside unmodified UNIX applications running on UNIX emulators. That would suggest rebuilding an operating system in one of these styles wouldn't entail throwing out all the existing software or immediately forcing a new programming model on developers who aren't ready.

    Microsoft used to talk about "personalities" in NT. It had subsystems for OS/2 1.x, WIn16, and Win32 that would allow apps from OS/2 (character mode), Windows 3.1 and Windows NT running as peers on top of the NT kernel. Perhaps someday the subsystems come back, some as OS personalities running traditional apps, and some as whole applications with resource management policy in their own right. Notepad might just run on the Win32 subsystem, but Photoshop might be interested in managing its own memory as well as disk space.

    The mid-90s were fun for OS research, weren't they? :)

    --
    -- John Truong
  65. The author is dissatisfied with all systems by judeancodersfront · · Score: 1

    "For the talk, he set out to define what a new operating system, if designed by scratch, would look like today. He concluded it would be quite different from Windows or Unix."

    But if you want to take the article as just an NT bash then go ahead, I suppose this is Slashdot.

  66. Seriously? by thetartanavenger · · Score: 1

    I seriously have to ask, what is this guy on? Of course moving to multicore machines requires an OS rework. Frankly even windows has already been reworked to support this, and will continue to evolve in ways that prove beneficial. This is how development works, you gain a better understanding of the problem and then change things for the theoretical better then investigate then next holdup.

    Why should you ever, with all this parallel hardware, ever be waiting for your computer?

    Processing takes time. Chucking multiple cores at a problem doesn't magically make this time disappear. There are always physical limitations with the hardware available. Most of the delays you see nowadays in consumer applications (and others) are not from a lack of processing power, but instead from poor memory speed. For a processor to be able to do any real work it has to load all of the information from the hard drive into memory. Only then does the power of a single core come into play, and for a surprisingly short period of time. Even then accessing memory is an extremely slow operation, as information has to be brought into the caches, and written back/through to memory. The moment you start adding multiple cores on top of this, you suddenly start getting coherence issues between the caches, where one cache writes to data that is shared between the cores.

    The OS could assign an application a CPU and some memory, and the program itself, using metadata generated by the compiler, would best know how to use these resources

    Is he suggesting that you have as many CPU's as you do programs, each with their own high-speed caches. CPU's in general sit there idling for a large percentage of the time, and that's with multiprogramming already in place. Also, the caches are the most expensive form of memory, are consumers going to pay that price, for something where they'll still just have to wait for IO anyway? This just sounds like an extremely large waste of resources. The last part of that statement is also how things already work. Has this guy not heard of OpenMP before? Granted for the time being people are expected to include this metadata themselves, but this is an area of computing being highly researched, attempting to automate this process as much as possible. Most compilers already do this up to the point of static analysis, and many are gaining new abilities such as speculation to go further.

    To get the full benefit from multiple cores, developers need to use parallel programming techniques. It remains a difficult discipline to master and hasn't been used much, outside of specialized scientific programs such as climate simulators.

    It is difficult, but it's getting easier. Many programmers learnt to program in a sequential imperative way, it takes time to break out of these habits. It is also a discovery process as we don't entirely know how to make programs in parallel. Languages are adapting to aide this process (many functional languages for example) but they each have their own issues and limitations. These techniques are being widely used, but much of the problem is that consumer level programs don't actually have much parallelism to them. It becomes much more obvious for scientific programs as they are inherently parallel. Again, compilers are making great strides in automating this process for the programmer.

    You don't want to wait for Microsoft Word to get started because the antivirus program chose that moment to start scanning all your files. Most OSes have some priority scheduling to avoid these bottlenecks, but they are still crude

    So think about the specifics of how the hardware itself is going to react to what you're asking and work on a better scheduling mechanism?

    In this approach, the operating system would no longer resemble the kernel mode of today's OSes, but rather act more like a hypervisor. A concept from virtualization, a hypervi

    --
    Who need's speling and grammar?
  67. Re:Current architecture flawed but workable BUT... by lennier · · Score: 1

    If you are trying to tell me there's no way using the current abstractions to implement this I say you're mad.

    That's between me and my psychiatrist... but I suspect current abstractions do have quite a bit to do with the 'overzealous locking' problem you're describing.

    The current abstractions promote the idea that sequential operation should be the norm and parallel operation is something you have to manually program for. And that manual programming (processes and threads) is done in a number of incompatible ways derived from different models, and at least one of them (threads) is really, really unsafe and practically impossible to do correctly.

    So programmers being lazy and smart, do as little work as they need to, and they tend to lock things in large chunks, because that's simple and it works and can be tested roughly okay.

    I believe that if we had finegrained instruction-level parallelism as the paradigm, the opposite state of affairs would hold: things would naturally be done in parallel, and it would take work to create global synchronisation. Programmers would still be lazy, but you wouldn't have the 'gah why did doing one thing lock up a bunch of others' issue - you'd have the 'gah why is my one big task still waiting on lots of little tasks to complete'.

    Which I think would be a better world and slightly less broken than the current one.

    Admittedly finegrained parallelism does mean the potential for a lot of speed loss in context switching if it's done dumbly, so I think making it work would require highly dynamic languages able to 'recompile' or reallocate code on the fly. Current thinking in language design doesn't favour highly introspective dynamism but is still hung up on compile-time optimisation and hard-coded typing. It would also require a complete ground-up rewrite of code merging language and OS into one abstraction, and nobody's keen to do that.

    But in a perfect world, that's where I'd like to go. Parallel everything, and serial as a system-generated local optimisation.

    --
    You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
  68. Re:Current architecture flawed but workable BUT... by Tablizer · · Score: 1

    I smell an open-source opportunity to replace Windows Explorer. If each component/function of Windows is slowly replaced by a better open-source version, then eventually people won't need Windows at all without the learning curve transition of Linux distros.

  69. One boon by Jenming · · Score: 1

    that comes from neither the Program nor the OS knowing how to schedule the tasks across all CPUs/cores is that when a poorly written or otherwise CPU intensive program pegs one core the OS and other programs running suffer nearly no performance hit.

    --
    Morpheus, God of Dreams.
  70. Re:Current architecture flawed but workable BUT... by b4dc0d3r · · Score: 1

    I've been wondering for years why disk I/O makes the machine slow down. Antivirus scans taking 5% CPU time should not reduce the response rate of the system, because disk reads should be the bottleneck, not scanning. But I always see a slowdown when that happens, disk access in general. File copying doesn't see to show as much of a problem, but it should be in theory reading and writing combined. 95% idle CPU should respond instantly, but it doesn't.

    I remember watching a 233mHz box run NT 4 server, and things like zipping a file up would make the screen update so slowly you could watch each box paint. First the outline, then the fill, then any text, and on to the next box. It got better, as computers got faster and I assume MS fixed some aspects of it, but it's still there.

    I wrote a VBS that uses WMI objects to lower the process priority for several things (I know, we're supposed to disable them from starting up, but I can't in this case). The biggest offenders are: wmiprvse.exe, msiexec.exe, wuauclt.exe. When they start using CPU, the interface locks. I never knew why.

    Now it makes sense. Task switching shouldn't be a problem if you're not using all your memory - paging does add a delay, especially if you just have to fetch a little used resource from the far end of a file that's been dropped from memory due to least-recently-used swapping. So without paging, interrupt overhead could explain it - but only if the 'system' process ignores that in its reporting - because I wouldn't even notice if CPU usage spiked when the UI became sluggish.

    Then again, shouldn't the UI have highest priority? Programs shouldn't decide what you're working on - if you click something else, it should work. If a runaway program is doing something stupid, it shouldn't take 5 minutes to bring up task manager, or process explorer - that's why I had to run my VBScript on startup in the first place.

    When I can't figure out what's using the CPU because task manager won't come up because some program is using all the CPU, that's bad. But when I finally get task manager open and it shows 99% idle and I still can't select a line and "End Process" because the UI is barely responding, that's terrible. Watching task manager paint each line on a dual core 2.53 gHz notebook, with 99% idle time, is unacceptable.

  71. Energy efficiency will do it by pslam · · Score: 5, Interesting

    If we want efficient code, we have to figure out ways to reward the programmers that write it. I don't see any sign that people anywhere are interested in doing this. Anyone have suggestions for how it might be done?

    It's happening, from a source people didn't expect: portable devices. Battery life is becoming a primary feature of portable devices, and a large fraction of that comes from software efficiency. Take your average cell phone: it's probably got a half dozen cores running in it. One in the wifi, one in the baseband, maybe one doing voice codec, another doing audio decode, one (or more) doing video decode and/or 3d, and some others hiding away doing odds and ends.

    The portable devices industry has been doing multi-core for ages. It's how your average cell phone manages immense power savings: you can power on/off those cores as necessary, switch their frequencies, and so on. They have engineers who understand how to do this. They're rewarded for getting it right: the reward is it lives on battery longer, and it's measurable.

    Yes, you can get lazy and say 'next generation CPUs will be more efficient', but you'll be beaten by your competitors for battery life. Or, you fit a bigger battery and you lose in form factor.

    The world is going mobile, and that'll be the push we need to get software efficient again.

    1. Re:Energy efficiency will do it by setagllib · · Score: 1

      You have a very strange definition of "core". Do you mean that any ASIC or FPGA is automatically a core? More ambiguously, what about an FPU or GPU? If a mobile phone has "half a dozen cores" then a PC has hundreds.

      --
      Sam ty sig.
    2. Re:Energy efficiency will do it by drinkypoo · · Score: 1

      You have a very strange definition of "core". Do you mean that any ASIC or FPGA is automatically a core?

      There are general-purpose CPU cores hiding inside of WiFi chips, radio modems, and assorted controllers in many cases. This is true throughout computing. The revered but currently lowly Adaptec 2940 has a Z80 processor on it. Anything that can run general-purpose code (if you can figure out how to get it there) is a "core" in the common parlance of nerddom.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  72. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 0

    I found a solution to this long ago. After the copies fail, select all of the files and copy them again. When the "this file already exists" prompt is displayed, place your stapler, jam your pencil, or do something of the like to hold the "n" button down since there isn't any way to say "repeat". I recommend having notepad running in the background to catch all of the extra "n"'s.

    Luckily, this isn't an issue in Win 7.

  73. That's a trade off by judeancodersfront · · Score: 1

    that has nothing to do with dumb programmers. Modern programs are not designed for old systems. People with old systems are not the targeted market for shiny new software. This would be like calling Crytek programmers dumb for making a game that doesn't work well on your 5 year old computer. Modern software is designed for modern computers.

  74. Re:Current architecture flawed but workable BUT... by duguk · · Score: 2, Informative

    For that matter when a copy or move fails in Explorer, why can't I simply resume it once I've fixed whatever the problem

    Try TotalCopy which adds a copy/move in the right click menu; or Teracopy commercial (free version available, supports Win7) complete replacement for the sucky Windows copy system.

    USB/Network freezes and file copying isn't a fault of CPU cores like you say, Windows is just a sucky OS. Multicore stuff gets complicated, but this isn't going to be a panacea for Microsoft, it's another marketing opportunity.

  75. Rewiring the World by DannyO152 · · Score: 1

    Went to high school with the guy. If he remembers me, it's only as that dude every one in Chess Club could beat with time enough in a lunch period to start another match.

    It seems to me that the history of software architecting has been to write things that were kinda close to correct and then punt on the final polishing until the hardware caught up. One reason why software and computers are so widely loved and respected. From the original article, I suppose the argument is being made that all the folks adding cores should take a break. However, looking at the speculation in the article, there seems also to be the suggestion that by adding more and more cores, each process may be given its own cpu. While this would allow for more simultaneous independent processes, each process still takes as long to complete. There are two things which could cause the user to press the "This Sucks*" button, their music stutters, i.e., a particular process doesn't have the resources it needs, or the user has to go to the meeting but the computer hasn't finished rendering the hand-out, i.e., a particular process requires a certain number of clock ticks.

    At its heart, a processor does two things, count and compare. Feeding the jobs to the processors so there's few moments of inactivity is, I believe, an NP problem, which means the better algorithms get the right answer a lot of the time. One could do better if one could predict the length and number of jobs that will enqueue, but, being able to predict in that way seems to contradict the results from The Halting Problem. So, my educated guess would be that 100% efficiency is an unobtainable limit. Now imagine that we are talking about a desktop and the computer is waiting for me to type, read, and type again. Could the system have devoted more resources to housekeeping during the millions and maybe billions of cycles between the events I initiate? Sure, but who's to say that the next event occurs in 0.75 seconds or 20 minutes (because I went and had a snack or got a phone call). Context switching will always have a cost and my tasks will be the ones I notice as slow or unresponsive. Operating systems are written to give me the illusion that it gets right on the things I ask.

    The article suggests there's a "Field of Dreams" effect regarding hardware and that this is a problem. I remember being taught that anything one may do in hardware one may do in software and vice versa. So, it makes sense to me that hardware folks should build the best processors they can imagine and left the software people figure out utilization tactics and strategies.

    That, though, leads me to the other big hairball. Legacy software. We have concurrency/parallel sensitive languages. We have semantics that have been added to existing languages so that blocks of code may be noted by the runtime and distributed to the good-enough and sometimes best choice among available processors. But, where's the business case for hiring programmers to go back, rewrite and re-debug old software to identify the blocks? This point applies to the new wished-for architecture as well, if it existed. What are the odds that C will be the best higher level language for the bare-metal systems programming in this new hardware architecture? (What about real-world patent/marketing issues with a new architecture and, by this, I ask unless it was invented by Intel, wouldn't Intel do everything in their power to kill it?) Would it be fair to say that one problem with a pc on every desktop is that when the pc needs to be changed, it takes forever?

    * A performance monitoring and adaptation mechanism suggested in the article. Which reminds me, how much of our desktops' poor performance may be laid to network latency, congestion, and the economics of bandwidth capacity?

  76. Re: This is new? by ftide · · Score: 0, Offtopic

    It isn't.

    Multicore has been with us for over a decade now. It is practical and conducive to build open cores from class declaration up so methods, file types and handlers exist between architectures and at same time there's decoupling of needed resources as processes.

    To point the way to what exists now there's Yellow Dog Linux for both Macintosh and Apple's PPC platform:

    http://www.yellowdoglinux.com/products/faq/

    The older version works on MacOS 8/9. The new one works on Mac OS X.

    Linmac or lintel would be most nice for us micro-engineers. The smaller businesses we want to associate with could branch away from both static software design and largescale deployment tied to that very design, focusing more on customizing digital end-pieces to attach to current semiconductor inputs if the correlated software to do that in places (like EAGLE for Ubuntu) is manufactured and delivered in an open core form of engagement.

  77. Re:Current architecture flawed but workable BUT... by maxume · · Score: 1

    FreeFileSync has a decent enough GUI, for the timid:

    http://sourceforge.net/projects/freefilesync/

    (a nice feature is that 'compare' and 'synchronize' are separate steps, with a visual display of the comparison)

    --
    Nerd rage is the funniest rage.
  78. Put up or shut up. by Anonymous Coward · · Score: 2, Interesting

    I'm getting really sick of posting this, but I'll continue to do so until you do.

    BUILD A WORKING PROTOTYPE OF THIS "UNIVERSAL BEHAVING MACHINE", OR SHUT THE HELL UP.

    Those of us who aren't insane aren't impressed by talk, we're impressed by results. If you spend half as much effort building the thing as you do flapping your damn jaw, you'd be done by now.

    (For any uninitiated mods, this fellow is slashdot poster "rebelscience", and maintains a website of the same name. Every time a multiprocessing-related thread comes up, he posts this tripe but has never actually done anything about it. Visit his website, and you'll see why I call him a lunatic)

  79. Legacy What? by Plekto · · Score: 1, Troll

    The key may not be in throwing more energy into refining techniques such as parallel programming, but rather rethinking the basic abstractions that make up the Microsoft operating systems model.

    There. Fixed it.

    Windows is a lot like Apple's old OS 6/7/8 was - old and haggard and full of legacy cruft that just needs a complete ground-up re-write to address. Sure, it looks pretty and runs fairly decently now, but it's plainly also at the end if its life-cycle and showing extreme signs of stress.

    Apple took an enormous risk in making a clean break from the past and it seems to be working well for them. Microsoft needs to as well. I doubt that it will, though, as it tends to operate more like GM than anything else. Tons of levels of bureaucracy and a general unwillingness to do serious innovation. After all, what worked in the past should work in the future? Right?

    Let's hope that they figure it out sooner rather than later. Or else it's going to get very very lonely at the top.

    1. Re:Legacy What? by sourcerror · · Score: 1

      Vista/Windows 7 are written from scratch, they aren't derivatives of NT.

    2. Re:Legacy What? by Plekto · · Score: 1

      Vista/Windows 7 are written from scratch, they aren't derivatives of NT.
      That's what their marketing department tells you and yet you can run applications that were written for XP as well as many legacy applications on them. You can load up Visual Basic as an example and it runs.

      Compare this to Apple - OS 8 just does not work on the new machines. Go get an emulation program if you want to do that. They were faced with an impending wall to get over and they made the right choice. It was drastic but had to be done. The result was amazing and sales have never been better for them.

      Microsoft has to break backwards compatibility to move forward. And yet they refuse to do it. This will cause them endless headaches and problems as their competition will be able to move forward while they run into issues like this over and over again.

      What needs to happen:
      1 - *IX-like streamlined code and core. Most likely use BSD since it is closed-source enough to protect their IP. Or design their own version/OS from scratch.
      2 - 64 bit only. Native support for the new hardware and ram limits and so on.
      3 - Legacy applications run under an emulator until people get used to the new OS.

      If this begins to sound a lot like Apple's solution, that's not surprise. Microsoft can easily make their own version/flavor if they so wish. There's plenty of room in the marketplace to complete. But if they do nothing and wait until Windows 9 Windows 10 to make this move (8 is as soon as they could do it- maybe 2 years from now) they will be dead and forgotten.

      A perfect example of this is Epson. They were #1 in printing and printers for almost two decades. They had a lock on the market and it was considered law that it would always be that way. Then a small upstart named HP came along and bet everything on a new technology. Within a few years the entire industry had bailed on Epson and moved to inkjet technology. Epson went from being #1 to just another small player in a field of many. And they were one of the lucky ones that only did survive by adopting the new technology. Most of the entire impact printing industry just simply died off.

      Microsoft could well remember this past history. They are not literally invulnerable and if a better competing product does come along the business world will flee to it without much hesitation. Currently they are getting close to the end of their life cycle, much like impact printers were. They need to move before too many of their users leave and they don't have enough market share left to force the rest/the loyal to come along when (not if) they have to eventually do a complete re-write/make a brand new OS)

      Five years will be too long. By then, even Ubuntu will be mature and easy enough to use that it will make Window 7 look like the poor kid on the block who can only afford a set of Tinkertoys while everyone else is playing with Legos. It may be too late even now to fix the PR damage that they have piled upon themselves over the last decade. And unlike Apple, they don't have any Messiah to come and re-invent the company all over again. Even Gates has left it to its own fate.

    3. Re:Legacy What? by exomondo · · Score: 1

      If this begins to sound a lot like Apple's solution, that's not surprise. Microsoft can easily make their own version/flavor if they so wish. There's plenty of room in the marketplace to complete.

      But Apple's core business is hardware, they rely on being able to bundle hardware and software as a product and have viciously been protecting their questionable practice of tying their software to their hardware because they know if they lose that tying then the 'apple tax' goes away. Microsoft's core business is software, if they make a product that is compatible with the all the unix and unix-like operating systems then they end up in furious competition with free alternatives, the predominant reason that prevents people who would potentially switch to, say Ubuntu, from switching is the incompatibility of applications.

      But if they do nothing and wait until Windows 9 Windows 10 to make this move (8 is as soon as they could do it- maybe 2 years from now) they will be dead and forgotten.

      A perfect example of this is Epson. They were #1 in printing and printers for almost two decades. They had a lock on the market and it was considered law that it would always be that way. Then a small upstart named HP came along and bet everything on a new technology. Within a few years the entire industry had bailed on Epson and moved to inkjet technology. Epson went from being #1 to just another small player in a field of many.

      Except that changing from Epson to HP is easy, it's not like you have a bunch of critical software that will only print on Epson printers. It's not as though 90%+ of new printers are Epson by default then you can - if you want - switch to HP.

    4. Re:Legacy What? by Plekto · · Score: 1

      But 15 years ago, it wasn't that way. Nearly nothing worked on inkjets and everything was made to work best with impact printers. NOW it is easy to switch, but then it was horrendous. Yet, twice as fast for half the cost is something that will kill the competition every time no matter how entrenched they are.

      I don't like the "Apple tax", either, but it's not just Apple. Microsoft also has a "Microsoft Tax" as well in their insane pricing structure and the requirement to upgrade a lot of hardware and memory to switch from XP to Windows 7.

      Microsoft's problem is that they are the slower and less flexible to change company that is rolling along on a couple of decades worth of momentum. I wonder what would happen if Apple decided to make their next OS no longer require Apple hardware? One small change and suddenly you have a thousand managers in Redmond sweating bullets. Microsoft is now stuck with facing a scenario like that. The only question is - will it be in one year or ten? The clock is ticking and so far I see them trying to eek that last bit of money out of their old designs.

      Epson tried and tried but finally even they had to realize that it was better to just pay the patent fees to HP and move to the new technology. And in computers, that new technology is BSD(I would say Linux, but given that open-source isn't something Apple OR Microsoft believe in, BSD is the alternative barring a total new fork from scratch. And even Microsoft isn't likely to have the desire or skill to do that right now.

      Yes, it's going to be brutal, but the alternative is to suddenly find themselves pushed out of the market. And if they are, we'll just use something else. Windows XP was the thirteenth operating system that I had used to date. OSX and Linux are #14 and #15, btw, if only because they came out later.

      Oh, the list, as a footnote: :)
      1: PET(ouch that was a long time ago) 2:Atari(various) 3:TRS/80/etc 4: CP/M 5:Commodore 6:Apple II/IIe 7:Apple IIGS 8:Amiga 9:Macintosh "classic"(since system 2.0) 10:DOS 11:VMS 12:HP/UX(#10-13 in college) 13:Windows(various flavors since Windows 3.11) 14:OSX 15:Linux 16:?

      30 years+ and 15 operating systems. I guess I have a different perspective than most people. :)

    5. Re:Legacy What? by sourcerror · · Score: 1

      "Vista/Windows 7 are written from scratch, they aren't derivatives of NT.
      That's what their marketing department tells you and yet you can run applications that were written for XP as well as many legacy applications on them. You can load up Visual Basic as an example and it runs."

      I haven't used W7, but ppl say there's an XP mode, with a full bundled XP. The question is, how are "native" W7 apps run.

    6. Re:Legacy What? by Plekto · · Score: 1

      My main point about this wasn't so much as it being a full-re-write or whatever Microsoft's marketing and PR department says, but that as long as it tenaciously holds on to legacy code and doesn't excise it completely will be unable to move forward and compete. But this means a new format, new bios, new memory allocation methods, new i/o mapping, and so on. Much of that "legacy code" is actually the interface between the OS and the older hardware, which is why 90%+ of all crashes and bugs occur. The OS asks the crappy hardware to do something it doesn't want to or is too slow to do and boom - you're back to square one.

      Note - this also means a total re-working of motherboard designs to have more speed and better interfaces as well. We're essentially using recycled 1980s technology and tweaking it. It works fine, but it's just about hit a wall. For instance, find me a motherboard with actual PCIe 16X X2 specs. http://www.pcstats.com/articleview.cfm?articleID=2056 This seems to be the only one I could find, but what's next? It's hit a wall. (and any devices you use on the machine share that PCI bus - as do all motherboards for PCs)

      So what happens when we have to get around that "wall" in five or ten years? As I see it, Microsoft has no game plan for the true next generation of computers.

  80. Oh and which .NET programs are taxing the cpu? by judeancodersfront · · Score: 1

    The most popular consumer apps are based on old codebases that were written in c++. There are actually few .net apps in comparison and one of the most popular (Paint.net) is very light on resources. It's far lighter than The Gimp which is written in c++.

    Oh and .net apps are compiled to native code, it's a myth that they use a virtual machine.
    You can write a cpu-heavy program in any language. .NET has nothing to do with heavy cpu usage.

    1. Re:Oh and which .NET programs are taxing the cpu? by jonwil · · Score: 2, Informative

      .NET apps DO use a virtual machine, the Common Language Runtime and support .NET IL. However, the Virtual Machine DOES use just-in-time compiling and precompiling to compile the code to native code before it runs it.

      Same as any halfway decent desktop Java Virtual Machine implementation does now (mobile JVMs usually use hardware features like ARM Jazzelle to run the Java code faster)

  81. Re:Fist post! by wiredlogic · · Score: 2, Informative

    Well, I came here to see the fisting. And frankly, so far this site has been a real disappointment.

    You have to read at -1 to see the goatse trolls.

    --
    I am becoming gerund, destroyer of verbs.
  82. Did you read the article? by judeancodersfront · · Score: 1

    "Responsiveness really is king," he said. "This is what people want." The problem in being responsive, he noted, is "how does the OS know [which task] is the important thing?" You don't want to wait for Microsoft Word to get started because the antivirus program chose that moment to start scanning all your files.

    Microsoft has made multi-threading easier for Windows programmers as well with .NET but the article isn't about .NET or Grand Central. The author wrote about how a completely new OS needs to be designed around multi-core machines.

    1. Re:Did you read the article? by Jane+Q.+Public · · Score: 0

      "Responsiveness really is king," he said. "This is what people want."

      Says who? Care to put a name with that?

      What I meant was that CCD might not be terribly efficient yet. And why should it be? This is the first iteration, the first light of day. It will improve.

      And my main point was that Apple was and is so far the only mainstream OS that acknowledges this and had put forth an attempt -- no matter how good it is in this, its first iteration -- to address the issue. Windows sure as hell doesn't. I keep hearing about how there are tools to do it in .NET but that is still not the same thing. That is still doing it manually. Task Parallel Library? You still have to design around your threads and call Parrallel.Invoke(). PLINQ? You still have to explicitly make calls to PLINQ rather than doing the standard access. That is the difference. In Windows, you still have to do some thread management manually. In OS X, you don't have to... but you still can if you want maximum efficiency. At least you have the choice. With Windows you do not.

  83. Microkernels by Anonymous Coward · · Score: 0

    Yay. Lets get it started!

  84. Windows and Linux also have MultiCore Tech by judeancodersfront · · Score: 1

    Grand Central doesn't address issues that the author went over. He's proposing a new OS that gives applications direct access to resources.
    But I guess questioning Apple praise on Slashdot is a good way to get modded down.

  85. Re:Current architecture flawed but workable BUT... by Statecraftsman · · Score: 1

    I use FastCopy since it's free software and skips files that haven't changed. Has lots of other nice features as well but I've not seen it widely mentioned anywhere. Enjoy.

  86. Re:Current architecture flawed but workable BUT... by pushing-robot · · Score: 1

    since there isn't any way to say "repeat"

    Actually, there is.

    --
    How can I believe you when you tell me what I don't want to hear?
  87. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 2, Informative

    Fixed in Vista and 7, you can ignore errors and continue copying.

  88. Re:Fist post! by dudpixel · · Score: 1

    I come to /. to read tech news...

    you must be new here

    --
    This seemed like a reasonable sig at the time.
  89. Question: Does Linux need any retooling? by Taco+Cowboy · · Score: 2, Interesting

    The article in question talks about Winblows.

    What about Linux?

    Does it need retooling as well?

    --
    Muchas Gracias, Señor Edward Snowden !
    1. Re:Question: Does Linux need any retooling? by Runaway1956 · · Score: 1

      I believe that it does. Disclaimer out of the way first - I simply don't understand how things work, and I haven't a clue how to make things better, regarding multi core processors.

      That safely out of the way - just minutes ago, I loaded several pages from my news feeds, this page one of them. Firefox started loading pages, then greyed out, waiting for SOMETHING to happen. After about 10 seconds, the grey went away, and FF finished loading all the pages.

      Hey, a dual core 2Ghz Opteron with 4 gig of memory running from a RAID array shouldn't really be waiting for much of anything, other than my slow assed internet connection. So, why DO I have to wait for things to happen?

      Some retooling might be in order, I think.

      To be fair, I do run BOINC, and my machines are all kept near 100% CPU utilization. But, hey, task scheduling should be up to the task of keeping my interactive applications in the foreground, right?

      --
      "Windows is like the faint smell of piss in a subway: it's there, and there's nothing you can do about it." - Charlie Br
    2. Re:Question: Does Linux need any retooling? by TheRealGrogan · · Score: 1

      Not really, no. You were getting some fair CPU time to perform your other tasks. Loading up a bunch of pages in firefox simultaneously isn't trivial and your boinc processes are equally important as far as the kernel knows. If you want your boinc processes to yield in the manner you are expecting, run them through "nice" with a lower priority value. They'll get full CPU time when you're not doing anything else, but tasks with a higher priority will cause them to be preempted.

      I don't use boinc, so I don't know if it has its own priority settings but in the general case "nice -n 5 someprogram" (see the man page for nice) will start it with a nice value of 5, which a bit less priority than a nice value of 0 (without any influence from nice)

  90. Don't be pedantic by judeancodersfront · · Score: 1

    The myth is that .net apps run inside a virtual machine just like ye olden Java apps.

  91. Maybe you can help by Anonymous Coward · · Score: 0

    From what I understand, the author is calling for a complete reinvention of the computer and computer programming. It's not something you can do in your spare time on a shoestring. Apparently, there are a handful of people interested in starting an open source project to implement it. Maybe you can contribute.

  92. Data flow languages by goombah99 · · Score: 5, Interesting

    I've always thought that both data flow languages and fortran95 had some innovations for multi-core programming worthy of being copied.

    Data flow languages such as "G" which is sold as national instruments "labview" brand are intrinsically parallel at many levels. What they do is look at a function call as a list of unsatisfied inputs. These inputs are waiting for the data to arrive to make the variables valid. Then the subroutine fires. Thus every single function is potenitally a parallel process. it's just waiting on it's data. If you program in a serial fashion then of course those functions get called serially. But with graphic programming in 2D, you almost never are programming serially. You are just wiring outputs of other functions to inputs of others. Serial dependencies do arise but these are asynchronous and localized cliques. everything else is parallel. Yet you never ever ever actually write parallel code. it just happens automatically. Perl data language had a glimpse of this but it's not the same thing since the language is still perl and thus not parallel.

    Objective-C with it's "message passing" abstraction is perhaps getting closer to the idea of a data flow. While one might complain that well objective-C message passing is just a different sugar coating of C just like C++ is. This would be true from the user's point of view. But it's not as true from the Operating system's point of view. IN OSX, these messages are passing more like actual socket programming at the kernel level. So there's more to objective C on apple's than meets the eye. But I don't know how far you can push that abstraction.

    In fortran there are some rather simple but powerful multi-processor optimizations. First there's loops like "forall" that designate that a loop can be done in any order of the loop index and even in parallel. and then there's vectorized statements as part of the language like matrix multiplies. those are rather simple things so don't solve much but they do show that you can put a lot of compiler hinting into the language itself without re-inventing the language.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:Data flow languages by dgriff · · Score: 1

      Objective-C with it's "message passing" abstraction is perhaps getting closer to the idea of a data flow. While one might complain that well objective-C message passing is just a different sugar coating of C just like C++ is. This would be true from the user's point of view. But it's not as true from the Operating system's point of view. IN OSX, these messages are passing more like actual socket programming at the kernel level.

      Not true. Objective-C messages are more like traditional C function pointer calls. The message selector gets turned into an offset into a table of function call pointers. Think about it: if it was really using the kernel for every single message/function call it would absolutely kill performance.

    2. Re:Data flow languages by Anonymous Coward · · Score: 0

      LabIEW is, imdeed, inherently parallel due to it's graphical nature. In fact, LabVIEW programmers are taught how to force their code into serial execution if they want to, as opposed to the opposite.

      You can find out more about LabVIEW at ni.com/LabVIEW (National Instruments website) and lavag.org (community forum).

    3. Re:Data flow languages by goombah99 · · Score: 1

      I did say "like" not "was" socket programming.

      IN objective-C methods are not bound at compile time. When you call a method the compiler does not use a pointer or even a derefeneced pointer. instead it passes a message to an object. the object then intereprets how to handle the message-- usually by finding a method with the same name and polymorphism as the call. But the object is free to interpret it differently.

      Moreover the object is actually free not to even respond to a call! (try that in C++). if it does not it will send a message to the exception handler instead.

      Objects are dynamically linked at run time, not compile time.

      You can dynamically add methods to an object at run time.

      and you can even send messages to objects the running program does not own.

      thus it really is like socket programming and sending mes

      --
      Some drink at the fountain of knowledge. Others just gargle.
  93. Not a popular position but I'll agree with him by foniksonik · · Score: 1

    Say for arguments sake that every application created for a PC ran on bare metal CPU or at worst on a BIOS to provide access to hardware: hard drives, input devices, peripherals, networking, etc.

    This should make those applications much faster as there would be no middle man OS getting in the way telling the app what it could or couldn't do with resources. Every request by the app was responded to as fast as the CPU was able.

    This is what the poor MS guy is talking about. How many apps do you want to run at a time? More than 32? Well there's going to be 128 cores available in the not so distant future. You could run 128 applications that could talk to each other (conceivably) without any standard OS getting in the way. Now of course you would likely need a few 'applications' which we take for granted as part of the System OS - File management and Search, Basic Networking (getting IPs, DNS, DHCP, etc), Print Manager, etc. so some cores would be taken up by these utility apps.

    Overall though you would be running one app, one core with a Hypervisor of sorts managing the interconnect.

    You have to admit that it's an interesting perspective if nothing else... stop trying to manage threads, processes, optimization for parallel computing... just stop and realize that you don't have to any more. There are plenty of cores to go around... just give the app it's own core and let it run hog wild.

    --
    A fool throws a stone into a well and a thousand sages can not remove it.
  94. That is your point, not the author's by judeancodersfront · · Score: 1

    Grand Central makes threading easier but so does .NET. If you are going to write a 3D game for OSX you sure as hell can't just write it as single-threaded and have the OS figure the rest out. GCD is just an improved threading system. You still have to figure out how you are going to break the program up.

    1. Re:That is your point, not the author's by Jane+Q.+Public · · Score: 0, Flamebait

      No, you don't. If you think you do, you don't understand how GCD works.

      Having said that: will you get more efficient code of you properly manage threads manually in your own code? Sure. But I wasn't talking about efficiency, I was referring to the fact that this is the only mainstream OS that has such a facility. .NET and Windows DO NOT. Task Parallel Library and PLINQ still require manual intervention.

    2. Re:That is your point, not the author's by Jane+Q.+Public · · Score: 0

      I retract that: there does have to be a "dispatch" assigned to a code block. But it's still much more automatic than Task Parallel Library / PLINQ. First off, it is a much more general construct than the .For() and suchlike methods in TPL. Second, it purports to manage synchronization better than most programmers could usually do manually. I would be interested in seeing a benchmark to see just how true that is.

  95. Dumb engineers are why my Mercury can't go 300mph by judeancodersfront · · Score: 1

    it can't have anything to do with decisions based on cost/benefits.

  96. GPU then? by u64 · · Score: 1

    I'm no CPU expert, but here goes.
    We dont need any more CPU Cores. Aint GPU and OpenCL here
    to solve most of this problem?
    I mean, for most of us, all we ever need is use a nice fast,
    efficient DualCore, and a massive GPU.

    Enlighten me.

    1. Re:GPU then? by psbrogna · · Score: 1

      Here's a small dose of enlightenment: the case for servers.
      Servers need OSes too and they usually need to be able to handle more simultaneous thread.s

    2. Re:GPU then? by dlapine · · Score: 1

      It's not about what you need, but what the companies developing computer hardware can do to keep their customers in the hunt for new hardware. If they don't improve their products to the point where you're willing to shell out your hard-earned dollars, they won't make profit. What they can't do at the moment is make faster/more efficient CPU's/GPU's that have a good value. If they build a faster single CPU, the cost goes up. If the CPU is more efficient, the cost to build it goes up. Most people won't buy new hardware unless they 1) have no choice or 2) perceive a real value. As so many people have enough computing power for their needs, option 1 doesn't happen enough to generate real profits for a firm. That leaves option 2, and the technology is at a point where it's not possible create real value in a faster, single CPU now.

      What they can do right now is build CPU's and GPUs with more cores, and then make the claim that you, the consumer, need more cores. For a graphics card, that's mostly true, as the computing environment for graphics hardware is already able to use more cores, it's just a matter of whether you already have enough graphics power for your needs. Unfortunately, it's not true that more cores are better for CPU's. Your single user desktop isn't able to effectively use even 4 cores, except in certain specialized cases, let alone the 6, 8 or 12 cores in CPU's that have been recently developed.

      The original article is a call for changes to Windows to use those cores, not because you need more cores, but because you will have more cores in the new machines, whether you want them or not. And if you have them, you might as well find a way to use them.

      --
      The Internet has no garbage collection
  97. new compilers, languages, and OS's. by tempest69 · · Score: 1

    Coding this stuff by hand is a hassle. It's not horrible, but it isnt anywhere near the ease of coding non-threaded message-less communications. Now quite a bit can be done by adjusting a library call to make use of multiple CPU's.. Calling a sort function on a large list should auto parallelize with no intervention by the programmer.
    The programs need to have a supervisor that gets and transmits a heartbeat of the status of a program. Where the supervisor is virtually crash-proof.. And has the ability to properly release resources should the system enter a suspected deadlock (no this isnt remotely easy to do right, but easy to code a simple version that works well enough)..
    Coding Efficiently isnt really going to happen, there will just be efficient-enough. But using all the hardware so that software can be snappy is going to help, and functions that let a person do big things without having the ability to butcher the small things.

  98. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 0

    some of the things that bother me most about the OS

    Blame goes to Microsoft Management for that one

    that is somehow still the most popular desktop OS in the world.

    Credit goes to Microsoft Legal for that one there.

    Glad to help clarify things for you.

  99. Re:Current architecture flawed but workable BUT... by LordLimecat · · Score: 1

    If youre moving thousands of files over the network and youre not using xcopy, youre doing it wrong.

  100. Re:freeze during DNS resolution by Anonymous Coward · · Score: 0

    I haven't seen the code, but my guess is that Explorer freezes because it was written back when gethostbyname() was the only option for DNS lookup. Unfortunately, that function was both synchronous and non-reentrant, so it might have helped if they'd updated the code to use WSAAsyncGetHostByName(), but that function actually isn't reentrant either!

    MSDN says:

    The WSAAsyncGetHostByName function is not designed to provide parallel resolution of several names. Therefore, applications that issue several requests should not expect them to be executed concurrently. Alternatively, applications can start another thread and use the getaddrinfo function to resolve names in an IP-version agnostic manner. Developers creating Windows Sockets 2 applications are urged to use the getaddrinfo function to enable smooth transition to IPv6 compatibility.

    So the current "best practice" is to use getaddrinfo() in another thread. I guess the Explorer team didn't get the memo.

  101. Re:Fist post! by dwarfsoft · · Score: 1

    He does it the same way Strongbad does

    --
    Cheers, Chris
  102. Answer: Yes by Bigjeff5 · · Score: 4, Interesting

    First, the article in question talks about OS architecture, not Windows specifically. He specifically states that what he is speaking about is not something MS is working on. Quite the opposite, many of his MS colleagues disagree with him.

    Second, the fundamental problems with OS design are exactly that: fundamental problems with OS design. Nobody is making an OS that truly takes advantage of multiple cores, it's still single-processor thinking with the ability to use more than one processor, and this leads to a number of inherent problems.

    The article talks about what an OS might look like if built from scratch specifically for multiple core processing power, and there is nothing on the market like it at the moment. It's basically a hypervisor-based OS, where instead of giving programs slices of CPU time, the OS gives programs actual CPUs and slices of memory to use.

    Something like that would be extremely slick, we already do that for virtual machines and we end up with 8+ full-fledged servers running on the same machine. Why can't you pull that back a little more so it's individual programs assigned to each CPU such that they don't have to interact with the OS at all once they are up and running? Can you imagine?

    --
    Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    1. Re:Answer: Yes by jesset77 · · Score: 2, Interesting

      Looks like it's time for me to update my whitepaper on massively parallel OS design again? I admit, due to lack of interest I have let it fall a bit out of date, recently.

      Among other things, I'm going with the name "Ironfluid" now, as I've finally deconflated the terms "cloud computing" and "fluid computing". Cloud really just means "run by somebody else", while "fluid computing" implies parallel processing and fault tolerance; decoupling the software completely from the hardware. Google, for example, offers both: but does not offer the tools for the common sysadmin to form their own clouds.

      I think I'd like to.

      --
      People willing to trade their freedom of expression for temporary entertainment deserve neither and will lose both.
    2. Re:Answer: Yes by Jurily · · Score: 1

      Why can't you pull that back a little more so it's individual programs assigned to each CPU such that they don't have to interact with the OS at all once they are up and running? Can you imagine?

      Sure. It'll wait for disk I/O ten times faster.

      What we need is a "you don't want to use C: right now, trust me" signal. Ever tried to use Firefox while copying something big? Why does it take ages to display a webpage when it does not need to use the disk?

    3. Re:Answer: Yes by jackharrer · · Score: 2, Informative

      >>What we need is a "you don't want to use C: right now, trust me" signal. Ever tried to use Firefox while copying something big? Why does it take ages to display a webpage when it does not need to use the disk?

      It only works like that on Windows. I think it's mostly about bad system design. I have no such issues on my Linux machine, but lots on my wife's Windows one. Both are the same Thinkpad laptops, so fault can only be on OS side.

      --

      "an experienced, industrious, ambitious, and often, quite often, picturesque liar" - Mark Twain
    4. Re:Answer: Yes by mario_grgic · · Score: 2, Informative

      Firefox doesn't behave like that in OS X. So I don't know if this is OS specific issue?

      --
      As the island of our knowledge grows, so does the shore of our ignorance.
    5. Re:Answer: Yes by mario_grgic · · Score: 1

      That sounds nice until you realize that most programs can't function without relying on OS services as it is today. A program wants more memory? It asks the OS to give it some. It wants to access the disk, it asks the OS to give it the handle to the file etc.

      Unless you want each program to re-implement things OS does anyway, which would put as back to DOS days.

      --
      As the island of our knowledge grows, so does the shore of our ignorance.
    6. Re:Answer: Yes by juasko · · Score: 1

      I dont belive that would be slick the GCD, blocks approach from apple IMO is by far better. What happens when you have more processes to run than you have processors. The GCD in todays way which incorporate single cpu thinking into multiple dynamically will scale with overheads yes but it scales to optimal of the hardware you happen to have. GCD/blocks approach is ranted by many who don't understands it's beauty, it might not be the most novel approach but it's the best working approach out there.

    7. Re:Answer: Yes by multicsfan · · Score: 1

      You may want to look more at Multics developed in the 60's. Multics was designed from start to run on multiple CPU's. Multics did not have a primary CPU, all were created/treated the same. Every 'process' ran basically in its own "virtual machine".

    8. Re:Answer: Yes by jomcty · · Score: 1

      It's called a IBM System Z Mainframe.

  103. Apple Grand Central Sucks by Anonymous Coward · · Score: 4, Informative

    Apple's grand-central dispatch (GCD) solution is really primitive. It's just a simple thread-pool, where the programmer breaks their program down into tasks that can be executed independently then queues them for execution by the thread-pool.

    GCD is not in the slightest innovative, except for a hack that allows "c" programmers to write tasks with slightly more convenience, by adding limited "closure" support to the language.

    Similar concepts can be found all over the place; just see the "see also" section on the wikipedia article:
        http://en.wikipedia.org/wiki/Grand_Central_Dispatch
    Using any of the libs listed in that "see also" section, you can get GCD equivalent behaviour on unix/windows, and have been able to for years.

    There are also languages with far superior parallel-processing abilities, where the effort is done by the compiler/environment, not the programmer. See any functional language, eg Haskell or Erlang. Write a program in these languages, and the parallel-processing happens just about automatically.

    Adding parallelism to the *OS* is quite a different issue, and not one that Apple's GCD addresses.

    1. Re:Apple Grand Central Sucks by IamTheRealMike · · Score: 1

      Yes indeed. Apple marketing have done a great job with GCD, apparently lots of people think it's something revolutionary. The more mundane truth is that it's a fancy thread pool. BFD. Thread pools fall squarely into the realm of "traditional approaches to multicore programming" that the Microsoft engineer in the article says doesn't work, and adding some bells/whistles like global load balancing isn't going to change that.

      Thread pools have their place - they are an appropriate tool for certain types of work - where you have lots of small independent tasks. I used the equivalent API in Java in a program I recently wrote to download and decompress audio samples. That worked great because each sample is independent and thus the problem is "embarrassingly parallel". The issue is, embarrassingly parallel problems are kind of rare. We already know how to max out your cores with those problems and have done for decades - now what about the rest? Apple has no answer for that.

    2. Re:Apple Grand Central Sucks by Anonymous Coward · · Score: 0

      Similar concepts can be found all over the place; just see the "see also" section on the wikipedia article: http://en.wikipedia.org/wiki/Grand_Central_Dispatch Using any of the libs listed in that "see also" section, you can get GCD equivalent behaviour on unix/windows, and have been able to for years.

      Which just proves what a bad source wikipedia can be sometimes -- and how authoritatively you're talking out of your ass. To argue that OpenMP is "equivalent" to GCD is really missing the forest for the trees.

    3. Re:Apple Grand Central Sucks by DoktorFaust · · Score: 1

      I think that the usage patterns with GCD are a little bit more broad than you're giving it credit for. Your audio processing example, for example, works just fine with other more primitive parallelization libraries. You could have easily done that with NSOperation before GCD was around. The question is can you do the equivalent to the -analyzeDocument example in this wikipedia article, http://en.wikipedia.org/wiki/Grand_Central_Dispatch with your Java API? It's an honest question, BTW.

      --

      Die Menschen verhoehnen was sie nicht verstehen. -- Goethe.
    4. Re:Apple Grand Central Sucks by mario_grgic · · Score: 1

      Yes you can. It's routinely done in Java all the time. Execute something off EDT (on a separate thread) and update the GUI when you are done on EDT.

      --
      As the island of our knowledge grows, so does the shore of our ignorance.
    5. Re:Apple Grand Central Sucks by DoktorFaust · · Score: 1

      That doesn't answer the question. Obviously that's how you would have to design it. The question is what code would you have to write to accomplish what GCD with blocks allowed.

      I mean, programmers execute something on a separate thread and then make notifications on the main the thread all the time. The beauty in GCD with blocks is what little code you have to write to accomplish that task. Having your code stay contextual (like in the wikipedia example) is far better than splitting it across multiple functions. Additionally, that concurrent task was automatically handed to a system-wide load balanced thread pool.

      So, to answer the question just show the equivalent code in Java that maintains the same benefits that GCD does.

      --

      Die Menschen verhoehnen was sie nicht verstehen. -- Goethe.
    6. Re:Apple Grand Central Sucks by juasko · · Score: 1

      You guy's are ignorant and stobborn. For f sake With GCD and blocks I can make my Hello World! App multi threadded and run in optimal amount's of threads on unkonwn hardware specs. And no I don't know much programming but know some basics in C,C++,VisualBasic, php scripting. If GCD is not a revolution you have no idea what a revolution is. It's like saying that the Womens Liberation was no liberation. Because their where free allready (In a few isolated cases areas). Your just plain stupid. No Apple did not invent GUI, but Apple made the revolution happen. This is why GCD is a revolution. I makes me even me a lousy shit programmer that cant even spell to C#, able to get my skitty little hello world application multithreadded and to utilise the hardware to it's most. Maybe you people can program and do understand parallel programming. I surely don't but I know that now I can have 5 zillion cores pulld the shit out of them with little effort. And that is to me a REVOLUTION. It brings the power to the people. Not only to Mao.

    7. Re:Apple Grand Central Sucks by mario_grgic · · Score: 1

      Java currently doesn't have closures. If it did, it would be trivial to do exactly the same thing as the objective C example.

      However, people use thread pools, executors, producer/multiple consumer task queues all the time. Of course this is all the JVM level, not OS level.

      In Java it is relatively trivial to execute something on a thread, and it is done all the time. In C family of languages, things were never that simple.

      --
      As the island of our knowledge grows, so does the shore of our ignorance.
    8. Re:Apple Grand Central Sucks by Anonymous Coward · · Score: 0

      s/guy's/guys
      s/ f /fuck's
      s/sake With/sake with
      s/App multi/app multi
      s/threadded/threaded
      s/amounts's/amounts
      s/And no/And no,
      s/but know/but I know
      s/, php scripting/and PHP scripting.
      s/Womens/Women's
      s/their where/they were
      s/allready/already
      s/(In/(in
      s/cases areas/cases
      s/Your just/You're just
      s/I makes me/It makes
      s/even me/even me,
      s/multithreadded/multithreaded
      s/to it's/to its

      Run those through sed and your post will merely be stupid, instead of downright painful to read.

    9. Re:Apple Grand Central Sucks by snadrus · · Score: 1

      No C, no deal for Linux. Lets review your list for GCD, see also:
      * Task Parallel Library - .NET
      * Java Concurrency
      * OpenMP - comparable open standard for C, C++, Fortran
      * Intel TBB - C++
      * Thread pool pattern - DIY
      * Task parallelism - not a lib
      * Fastflow - C++

      That leaves OpenMP which uses pre-processing to convert hints into threaded behavior. It doesn't solve the incredible challenges simultaneous variable access (and GCD does) making it as much developer risk as without it.

      GCD still sounds better (though I've never used either). Comments?

      --
      Science & open-source build trust from peer review. Learn systems you can trust.
    10. Re:Apple Grand Central Sucks by exomondo · · Score: 1

      You guy's are ignorant and stobborn. For f sake With GCD and blocks I can make my Hello World! App multi threadded and run in optimal amount's of threads on unkonwn hardware specs.

      Let's see it then...what part of 'Hello World' are you running concurrently?!

  104. Re:Current architecture flawed but workable BUT... by RzUpAnmsCwrds · · Score: 2, Insightful

    Windows Explorer no longer kills network transfers after a failure as of Windows Vista.

    Maybe some of the people complaining about Windows should stop using a version thats 9 years old (XP). Red Hat 7.2 isn't particularly great by today's standards either.

  105. Pregnant women by Jamey · · Score: 1

    Microsoft is not satisfied with getting nine women pregnant and getting a baby in a month - they think we should get 259 women pregnant, and get a baby in a day.

    Somethings just *HAVE* to happen in sequence, and can't happen in parallel. You can't add x and y to get z *WHILE* you're adding z and w to get n.

  106. What a load of doody by Anonymous Coward · · Score: 1, Insightful

    There is no information in the article. He asks if we have multi-core CPUs why would we ever be waiting for something to happen on our PC? Well, cuz the slowest thing in the PC is the hard drive... and more people only have one. Prioritized IOs don't make that much of a difference because even if my disk was idle, and the low priority IO (Vista has these BTW, 2 IO priorities) moves the disk head, and then my higher priority IO comes in, it's been delayed because it has to move back.

    Disk IO is the biggest bottleneck and redesigning Linux or Windows isn't going to solve that problem. L1,2,3..X cache -> memory -> disk, as long as we have that heirarchy and there is such a disparity between the layers, no OS rewrite will help.

    That's why massively parallel systems are so radically different from general purpose computers and ususally only useful on specific tasks (e.g. SIMD implementations etc.)

    Research in highly parallel IO is addressing the issue, but won't help home/small business.

    No wonder this dude's peers at MS disagree w/him.

    You will have to design your apps and supporting hardware to take advantage of whatever parallelism you have available, and break up your workload intelligently.

    Yeah you'll have to pay people who understand how to do concurrent programming properly.

  107. Been there, done that... by courcoul · · Score: 1, Troll

    How comes that, after a Microsloth lackey talks about "rethinking OS's" and gets everyone hot and horny with mental masturbations of what needs to be done to that disgrace to Computer Sciences called Windows, not a single mention has been made to the fact that Sun Microsystems developed the Niagara processor, with 8 cores capable of running 4 concurrent threads each, for a massive total of 32 concurrent threads in a single chip. And how the Solaris O.S. has evolved to a massively multithreaded system capable of using that processing capability. And how that was done in the past century. But since at the time Microsloth was too busy extorting our money with Lentium single core/thread processors, all that technology was conveniently ignored. Now that the low hanging fruit is gone and the going's rough, they will want us to believe they "invented" together with their Intel cohorts the multicore/multithread/paralell processing idea so they can raise the price of Windoze 8?

  108. Re:Current architecture flawed but workable BUT... by DigiShaman · · Score: 1

    It should be enabled by default, but it's not. The Microsoft reasoning behind this is that it uses additional RAM per Explorer.EXE process.

    --
    Life is not for the lazy.
  109. Re:Current architecture flawed but workable BUT... by drsmithy · · Score: 1

    To anyone using Windows (XP, Vista or 7) right now, go ahead and open up an Explorer window, and type in ftp:// followed by any url.

    I just tried this on a Windows 7 PC. An unresolvable name returns an error in a few seconds. A resolvable name, with no FTP server on the other end, produces the wait cursor, but I can click on another drive or folder and it responds in a few seconds (other Explorer windows are instantly responsive while this happens). A working FTP site (eg: ftp.microsoft.com) opens with a listing pretty much instantly.

    Where's the problem here ?

  110. err .. not quite by nilbog · · Score: 1

    Let's not say that modern operating systems need to be reworked when the only one that needs to be reworked is Windows. Don't act like everyone else has the same problem. I'm not trying to be a fanboy here, but see this page - specifically the section marked "grand central dispatch" : http://www.apple.com/macosx/technology/

    --
    or else!
    1. Re:err .. not quite by radish · · Score: 1

      If you actually think that GCD is anything new you clearly know very little about the topic at hand. It's just another triumph of the Apple marketing dept.

      --

      ---- Den ene knappen er powerknapp, den andre er Bender voice knapp "Bite My Shiny Metal Ass"

    2. Re:err .. not quite by nilbog · · Score: 1

      I didn't say it was new. In fact, I said it was old.

      --
      or else!
  111. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 0

    Windows explorer sucks. It always just abandons copies after a fail - even if you're moving thousands of files over a network. Yes, you're left wondering which files did/didn't make it. It's actually easier to sometimes copy all the files you want to shift locally, then move the copy, so that you can resume after a fail. It's laughable you have to do this, however.

    But it's not a concurrency issue, and neither, really, are the first 2 problems you mention. They're also down to Windows Explorer sucking.

    They seem to have fixed those issues with Windows 7. But ya, it really pissed me off too. The other thing that has made me literally destroy hardware is the way XP would lock your whole goddamn system if a network resource stopped responding.... even when you weren't trying to access it.

  112. Nothing to see here by Low+Ranked+Craig · · Score: 2, Funny

    Please move along

    --
    I still cannot find the droids I am looking for...
  113. Re:Current architecture flawed but workable BUT... by Phroggy · · Score: 1

    For that matter when a copy or move fails in Explorer, why can't I simply resume it once I've fixed whatever the problem is.

    Are you still running XP? They fixed that in Vista.

    --
    $x='S24;r)>63/* h@<5+oZ)32"5cz';$me='phroggy'x$];
    $x=~y+ -xz+\0-Tx+;print$_^chop$me for split'',$x;
  114. pthread == malloc == bugs by Anonymous Coward · · Score: 1, Insightful

    App programmers do not deserve all the blame. The tools for multithreaded development are primitive and difficult to use correctly. It is difficult and expensive to make good reliable MT software.

    Many years ago if I wanted a list of data I would manually malloc, memset and free data. There were lots of bugs because of the tedious management of memory. Now in C++ I write vector, or in Python I use a_list = [] and POOF! I don't need to keep track of ANY details.

    The state of multithreading libraries and tools must evolve to the point where normal (ie not VERY skilled or creative) developers can handle them without much thinking. This may require a paradigm shift similar to the object-oriented one in the eighties.

    Objects and exceptions and stack unwinding seem almost obvious to us, but some people had to pave the way for their use. We need some skilled computer scientists to work with skilled library developers to make a new paradigm for developing MT apps. When these ase of yet undiscoverd (or unpopularized) paradigms have been developed, we better hope that big players have the incentive and capacity to implement them in their current systems.

    I for one welcome our multithreaded overlords... when they get here.

    1. Re:pthread == malloc == bugs by rastos1 · · Score: 1

      Now in C++ I write vector, or in Python I use a_list = [] and POOF! I don't need to keep track of ANY details.

      I'm afraid that you are wrong

      The SGI implementation of STL is thread-safe only in the sense that simultaneous accesses to distinct containers are safe, and simultaneous read accesses to to shared containers are safe. If multiple threads access a single container, and at least one thread may potentially write, then the user is responsible for ensuring mutual exclusion between the threads during the container accesses.

  115. It's not even about multiple cores by macraig · · Score: 4, Insightful

    What's wrong with at least some operating systems doesn't even have anything to do with multiple cores per se. They're simply designing the OS and its UI incorrectly, assigning the wrong priorities to events. No event should EVER supersede the ability of a user to interact and intercede with the operating system (and applications). Nothing should EVER happen to prevent a user being able to move the mouse, access the start menu, etc., yet this still happens in both Windows and Linux distributions. That's a fucked-up set of priorities, when the user sitting in front of the damned box - who probably paid for it - gets second billing when it comes to CPU cycles.

    It doesn't matter if there's one CPU core or a hundred. It's the fundamental design priorities that are screwed up. Hell should freeze over before a user is denied the ability to interact, intercede, or override, regardless how many cores are present. Apparently hell has already frozen over and I just didn't get the memo?

    1. Re:It's not even about multiple cores by pandrijeczko · · Score: 1

      This is an excellent point.

      One thing that has always annoyed me about Windows, it even happens on the XP machines I use at the moment, is that it will quite happily steal the focus from what you are doing whenever if feels like it.

      So, for example, in Windows Explorer you can be renaming files in a directory into which other files are being downloaded and if a new file appears in there while you are changing its name, Windows Explorer steals the focus and your rename fails.

      Or the other one is with my work laptop where I log into my VPN connection for work from a dialogue box but if other applications are also loading, you get halfway through putting in a name and password and discover the OS has stolen away the focus once again.

      In the latter case, I think much has to do with Microsoft cutting corners on trying to make XP look like it boots to a loading state much quicker than it actually does - so whilst you have your desktop session on the screen and ready to go, it's still loading a lot of stuff in background.

      And to be honest, this is something that I've never seen Linux do.

      --
      Gentoo Linux - another day, another USE flag.
    2. Re:It's not even about multiple cores by psbrogna · · Score: 0

      Careful what you wish for. I for one would like my OS to make data integrity a higher priority then the user interface. Sure, I like my mouse pointer to move smoothly across the screen and for a window to close when I click on the close window control, but not if it means my bits are spooling to /dev/null.

    3. Re:It's not even about multiple cores by macraig · · Score: 2

      The FS operations simply need to happen at a slowed pace that favors the user at all times; why should that cause loss of data integrity? A file system that demands a minimum effective data rate below which bits are lost or corrupted?! That would certainly be a poorly designed file system or interface to it, wouldn't it? No wonder we need redundant (R)AID and backup solutions!

    4. Re:It's not even about multiple cores by Luyseyal · · Score: 1

      And to be honest, this is something that I've never seen Linux do.

      I reboot fairly frequently on my home machine (dual opteron with 2003/2004 hardware -- hibernation crashes it hard) and I must say one of the annoying things with Debian is when I'm restarting my desktop applications is that apps will steal focus from each other. The worst is when I'm typing in my mail password for Evolution and Iceweasel or some other application is starting. You pretty much have to start over. Very annoying.

      -l

      --
      Help cure AIDS, cancer, and more. Donate your unused computer time to worldcommunitygrid.org. Join Team Slashdot!
    5. Re:It's not even about multiple cores by psbrogna · · Score: 1

      Not all file (or network) operations are able to be slowed down. That's why we have hardware interrupts.

  116. Re:Current architecture flawed but workable BUT... by RightSaidFred99 · · Score: 1

    What doesn't help matters is that Microsoft's multi-threading APIs and libraries have been terrible since forever, and their new push towards multi-threaded programming has been to polish the turd a little. They just don't seem to have smart guys working for them any more who can design something as complex as a general purpose multi-threading library (akin to OSX's "Grand Central Dispatch"). I've seen Microsoft's weak attempt at it in .NET 4, and it's just... sad.

    I love when Some Guy on SlashDot mocks those silly (Ph.D, very very highly paid, very experienced) idiot developers at Microsoft. I'm sure you're a paragon of the software world, dude.

    Paragon.

  117. Re:Current architecture flawed but workable BUT... by dbIII · · Score: 1

    There is rsync, scp and a pile of other things for MS Windows now. It's growing up.

  118. Its YOUR fault Microsoft. by miffo.swe · · Score: 1

    "Why should you ever, with all this parallel hardware, ever be waiting for your computer?"

    Well for starters its only the CPU thats parallell in most computers. Your bloated pig of an OS that takes 4 Gig to run is causing more waiting because of I/O than because of CPU tasks. Stop writing often used routines in high level languages and youll see performance gains much bigger than any hardware can bring the next couple of years.

    --
    HTTP/1.1 400
  119. Does Software Transaction Memory count? by jonaskoelker · · Score: 1

    I guess it's up to MS to make a easy to use idiot-proof threaded framework for crappy programmers to use.

    Simon Peyton-Jones is woking on Haskell and Software Transaction Memory. Instead of specifying "lock here" and "unlock here" you say "this block should be executed atomically", with the posibiity of aborting, pausing or retrying the transaction (say, if you're waiting for a queue to be nonempty).

    I won't call it idiot-proof, but it's more human-fallibility-proof than threads and locks (I guess: I haven't tried it).

    1. Re:Does Software Transaction Memory count? by gtall · · Score: 1

      That notion is called a 'monitor', look it up, it is as old as the hills...well, 1970s anyhow. Per Brinch-Hanson wrote about them in his book, I forget where he got the idea from. A monitor is somewhat like a critical region with some added bells and whistles.

      Gerry

  120. Nonsense by Otis_INF · · Score: 1

    The research on software for multi-core/cpu computers wasn't stopped once people thought their desktops were fast enough, it's been continued for decades and the results have lead to more and more efficient servers. The point is that the PC, the desktop/laptop computer isn't setup as a server with multiple cpu's, shared memory and what not, and in there lies the problem. Not the research, not the software design principles, not the lack of research in languages.

    --
    Never underestimate the relief of true separation of Religion and State.
  121. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 0

    I've personally seen Windows Vista somehow cause a Windows 2000 file server to crash when copying large files from the network drive. That was before any Vista service packs, so it was the same Vista whose network performance turned to ass to keep the music from skipping.

  122. Looks like Tanenbaum will have been right after al by maweki · · Score: 2, Interesting

    Looks like Tanenbaum will have been right after all, I mean, a vast amount of cores and huge parallelism is the advent of the micro- and exokernel, isn't it? This would be the simplest way to harness the multiple cores (instead of modifying a monolithic kernel to use multiple cores)

  123. Re:Current architecture flawed but workable BUT... by bertok · · Score: 1

    What doesn't help matters is that Microsoft's multi-threading APIs and libraries have been terrible since forever, and their new push towards multi-threaded programming has been to polish the turd a little. They just don't seem to have smart guys working for them any more who can design something as complex as a general purpose multi-threading library (akin to OSX's "Grand Central Dispatch"). I've seen Microsoft's weak attempt at it in .NET 4, and it's just... sad.

    I love when Some Guy on SlashDot mocks those silly (Ph.D, very very highly paid, very experienced) idiot developers at Microsoft. I'm sure you're a paragon of the software world, dude.

    Paragon.

    Oh, I'm not, other people are. Like the guys who work for SUN, who integrated the best available multi-threading library for Java into the standard libraries. This was like... many years ago.

    Keeping in mind that C# and Java are virtually identical, why the hell wouldn't Microsoft implement a library that is "as good, or better"? Why would they implement some toy library that can't handle even trivial scenarios, let alone scale to hundreds of cores or handle huge enterprise apps?

    The only reason I can think of that they wouldn't do things well is that they... can't.

  124. laughable by Tom · · Score: 1

    perhaps it's time to rethink the basic architecture of today's operating systems, suggested Dave Probert, a kernel architect within the Windows core operating systems division at Microsoft.

    Well, perhaps it's time you stop to equate "Windows" with "today's operating systems".

    Every other major OS on the planet has been moving towards multiple cores for several years, and is ready for the multi-core systems currently on and coming to the market in the coming years. All, except Windows.

    --
    Assorted stuff I do sometimes: Lemuria.org
  125. Re:Current architecture flawed but workable BUT... by BetterThanCaesar · · Score: 1

    Windows XP Service Pack 3 was released on April 21, 2008, and my explorer.exe is dated April 14, 2008. Surely there has been time to fix Explorer's behaviour during those seven years.

    --
    "Stop failing the Turing test!" -- Dilbert
  126. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 0

    Maybe that "few seconds" is about 200 times slower than it should be?

  127. Re:Fist post! by Whalou · · Score: 3, Funny

    I'd browse at -2 if I could.

    --
    English is not this .sig mother tongue...
  128. You can't easily go parallel with C. by master_p · · Score: 1

    One of the reasons for not being parallel enough is that the C programming language is not easy for parallelism. It's not that it can't be done, but the language's basic purpose is at odds with the principles of parallelism. Something like Haskell is much easier to automatically parallelize, because of the lack of destructive updating, but Haskell goes to the other extreme. Something in between is required, but it's not here yet.

  129. Why should you ever be waiting for your computer? by Ihlosi · · Score: 1

    Because CPU power isn't the bottleneck in most systems, duh. What's slowing todays computer down are things like mass store access times and bandwidth, RAM size and bandwith, etc.

  130. Re:Current architecture flawed but workable BUT... by Threni · · Score: 1

    I've done that - I'm using Ubuntu as a base OS, and only use Windows when I have to (and as a VM, so it's sandboxed away from my regular desktop).

  131. Re:Fist post! by Anonymous Coward · · Score: 0

    Well, I came here to see the fisting. And frankly, so far this site has been a real disappointment.

    I know, /. was a lot better when goatse was all the craze.

  132. Re:Looks like Tanenbaum will have been right after by sourcerror · · Score: 1

    Well, he said things like parallelism in filesystem access is just a gimmick. (See Linus-Tannenbaum debate.)

  133. BeOS by Anonymous Coward · · Score: 0

    BeOS!

    But you killed it, so apologise for that first.

  134. They're not monitors by jonaskoelker · · Score: 1

    The STM transaction are not monitors, because they are not objects (http://en.wikipedia.org/wiki/Monitor_(synchronization) says monitors are objects). Also, STM transactions nest.

    Suppose your queue has a shift method, which does something like { while (empty) wait; ret=first; --size; return ret; }. Suppose it has a similar push method.

    Now, I want to do a queue transfer: grab one element from one queue and put it in another. How?

    { while (q1.empty) wait; while (q2.full) wait; q2.push(q1.shift()); }

    How do you do that with threads and locks? Well, if you don't reach into the locks inside of q2, you can have it fill up after you shifted out of q1, leaving you dangling (perhaps causing a deadlock somewhere else). So really, you have to violate the encapsulation of the queue class to add new atomic methods _using_ queues (not extending them).

    That is why STM beats locks and conds, and incidentally why it beats monitors implemented using locks and conds (yeah, you can use semaphores instead, but you don't want to).

  135. Anonymous Coward by Anonymous Coward · · Score: 0

    http://www.barrelfish.org/

  136. Re:Fist post! by Anonymous Coward · · Score: 0

    That's actually pretty good typing with your fists. Do you have a comically large keyboard?

    Yes, yes I do !

    ~Sent from my iPad

  137. Re:Fist post! ==@ ( O ) by Anonymous Coward · · Score: 0

    In the subject, since you asked.

  138. Re:Current architecture flawed but workable BUT... by rozz · · Score: 1

    solutions for the copy/move problems:
    - teracopy: 3rd party, nice and neat
    - robocopy: MS app, kinda clunky but better than nothing
    too lazy to add links, just google

    --
    "There is nothing more frightful than ignorance in action." Johann Wolfgang von Goethe
  139. BeOS FTW - Thread, thread, thread by Gothmolly · · Score: 1

    Pervasive multithreading gives you the best user experience. Hell, even the Linux kernel is self-preemptible to provide a faster-looking user experience.

    --
    I want to delete my account but Slashdot doesn't allow it.
    1. Re:BeOS FTW - Thread, thread, thread by ^_^x · · Score: 1

      I've been saying since XP that they should start from scratch and "go BeOS on it." Major "upgrades" like Vista break compatibility with loads of things anyway as they creep toward better security practices - I think they should just admit that every 15-30 years, they have to wipe the slate and start over. It will inconvenience everyone, but they have the market share to weather it and force adoption - it'll be like when Macs when from OS 9 to X. Support what legacy software you can by emulation and virtualization, but primarily, do it right from the ground up.

  140. it's simple economics by Colin+Smith · · Score: 1

    if you are a developer/user, then you care.
    If however you are a developer/seller then the hardware costs are bourne by your customers and you don't give a shit... Hence ruby on rails.

    --
    Deleted
  141. Re:Fist post! by ubercam · · Score: 1

    That's actually pretty good typing with your fists. Do you have a comically large keyboard?

    He must have learned how to do it from Strongbad!

  142. Re:Current architecture flawed but workable BUT... by Caetel · · Score: 1

    Right... an issue which was fixed 3 years ago with Windows Vista

  143. How by PhongUK · · Score: 1

    How do we test software written to be heavily parallel? For example, the games industry, we'd love to have ultra complicated path finding for 1000s of NPCs, we'd love to have bazillions of particles in a scene, but when we are presented with the task of developing a game for a quad core machine, or the PS3 (which are both about as parallel-capable as you can get at the moment), how do we write software that we can test on 16, 32 or 64 cores. TBH, we'll do what the games industry has always done and write for the target hardware.

  144. Apple has allready done it.. by juasko · · Score: 1

    And It will be implemented if not allready in freeBSD... after that maybe Linux will follow if that group of people understand the significanse of the technology. Under OSX 10.6.x it's called Grand Central Dispatch. And is opensourced under a different namne libdispatch, it utilise block that has been sent for standardisation and implemented int C, C++, and objC. Gcc compiler supports blocks it's just upp to you developers to utilize it. Automatic muliti threding, opimiates automatically for the hardware the user uses without compilation, all is done. Only thing that the developer needs to do is to state what parts of their code should be mulit thredded. The system desides amount of threads, syncronisation and all the rest. Programming for the rest of us. Souns likte too good to be true, an Apple fanboys geek talk or trolling. Why dont you check it out yourselfes. MS. could benefit from the blocks, but still need to implement their own GCD or opensource their kernel, If i understand the Apache license correctly which I havn't read myself. Apple opensource : http://opensource.apple.com/source/libdispatch/libdispatch-84.5.3/ Apple white paper on GCD: http://www.apple.com/macosx/technology/#grandcentral

  145. that's not "all systems" by pydev · · Score: 1

    He concluded it would be quite different from Windows or Unix.

    Well, duh! Talk about stating the obvious. Those were not the systems I was referring to. My point is that he needs to read the literature, since there were plenty of operating system and programming languages other than Windows and UNIX/Linux at one point, some of them for massively parallel systems.

  146. paradigm will change a little by Anonymous Coward · · Score: 0

    "Why should you ever, with all this parallel hardware, ever be waiting for your computer?"

    Cause it still needs to goto 1 display screen likely. Single display? there's your bottleneck.

  147. We're waiting on file I/O! by akakaak · · Score: 1

    'Why should you ever, with all this parallel hardware, ever be waiting for your computer?'

    In my experience, the vast majority of waiting that I do is because of hard disk I/O, not computation. I suspect that focusing effort on the intelligent and wide-spread use of SSDs and other faster-than-hard-drive media will do more to minimize my wait time.

  148. Re:Current architecture flawed but workable BUT... by greed · · Score: 1

    In a similar vein, you can bolt a newer desktop environment onto that Red Hat 7.2 box. At least, you can leave the kernel and glibc behind in ancient history, as the GUI is not part of the operating system. (It's part of the Red Hat distribution, but you can replace it with anything you like. Like replacing OS X Finder with PathFinder or something.)

    Now, if you want suck, how about an NFS server that freezes all client connections because one filesystem it is serving is over 95% full and the filesystem driver has a disastrous big-O complexity problem in the free block location algorithm? One that isn't solved by the normal "reserved for superuser" hack that's been in UNIX since the days of a 14-byte filename limit.

  149. Summary/translation: by swordgeek · · Score: 1

    "Windows soon hopes to catch up to where Unix was in 1993."

    --

    "People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
  150. Why not make the multiple CPUs look like only one? by Anonymous Coward · · Score: 0

    Have one virtual CPU that is really 4 cores. So it can issue 4 cores X 6 instructions/cycle = 24 full instructions dispatched in one cycle. OK, maybe overkill for small programs.

  151. Um, what? by Estanislao+Mart�nez · · Score: 1

    There are also languages with far superior parallel-processing abilities, where the effort is done by the compiler/environment, not the programmer. See any functional language, eg Haskell or Erlang. Write a program in these languages, and the parallel-processing happens just about automatically.

    Have you ever actually programmed in either of these two languages? In neither does parallel processing happen automatically. They both simply happen to come with easier-to-use thread synchronization mechanisms. You still have to decide what are your program's threads and the details of how they communicate.

    1. Re:Um, what? by Foolhardy · · Score: 1
      I've programmed quite a bit in Haskell. GHC is the most popular compiler by far and it implements all the latest parallelization and concurrency extensions (The last standard, Haskell 98, doesn't specify anything in this area).

      There are two approaches to using multiple cores in GHC:

      Concurrency; which ranges from explicitly created threads (either OS threads or lightweight runtime scheduled threads or some combination) that communicate through channels or locked variables or another traditional method, to STM.

      The other is parallelism. Whereas the concurrency methods all use monads to sequence and control operations and produce code that looks more like that of an imperative language, parallelism is done entirely in pure functional code. The short description of pure functional is that all data is immutable. This is very useful for parallel execution because it greatly simplifies evaluation dependencies. You don't have to worry about modifying things in the right order or change conflicts because nothing is allowed to be mutated in the first place. This enables non-strict evaluation, which means that the various values in a program (even those nested in data structures) can be evaluated at any time during program execution, and in any order (as long as they are evaluated by the time they're needed). Parallel approaches include:
      • Simple use of par and seq . seq ties the evaluation of one term to another, to force a term to be evaluated immediately even if it isn't strictly needed yet. par creates a "spark" to evaluate a value. This spark may be executed by a different runtime thread than is currently running. Together, you can specify one value to be evaluated locally and another to be potentially evaluated by another CPU. This will work well if the values are reasonably expensive to evaluate (otherwise the overhead of creating the spark, while small, will be greater than the benefits) and independent. Can easily be used with e.g. evaluating all the elements in a list in parallel; runtime threads will pick up and execute the sparks as they are created.
      • Parallel strategies. Create an evaluation strategy that mirrors the layout of your program, identifying the parts that can benefit from executing in parallel.
      • Data parallel Haskell is an upcoming method that allows you to define parallel array structures that the compiler can see through to determine vectorized evaluation strategies.

      In short, none of Haskell's methods of parallelization require you to be aware of threads or synchronization.

  152. Mod Parent Down by Anonymous Coward · · Score: 0

    Optimising OS code to milk every cycle from the available CPUs is exactly what OS programmers have done from the start (even at Microsoft).

  153. I really don't wait on my processor by Anonymous Coward · · Score: 0

    'Why should you ever, with all this parallel hardware, ever be waiting for your computer?' he asked.

    I'm on a core2 duo, and the only time I ever wait on my processor is when I'm playing a game or when I'm using keepass, because my db is reencrypted I think 1000 times.

    I do a lot of waiting though, but it's waiting on my hard drive. Don't think multicore is going to do much about that.

  154. Why you have to wait by jgrahn · · Score: 1

    'Why should you ever, with all this parallel hardware, ever be waiting for your computer?' [Probert] asks.

    I haven't read TFA, but quoted like that it looks pretty daft.

    • Because disk and network I/O is slower than your CPU.
    • Because if you *never* have to wait, you have an overpowered computer.
  155. Objective C does have garbage collection though by snowwrestler · · Score: 1
    --
    Build a man a fire, he's warm for one night. Set him on fire, and he's warm for the rest of his life.
    1. Re:Objective C does have garbage collection though by cbackas · · Score: 1
  156. Oh yeh, let's re-invent Mac OS 7. by argent · · Score: 1

    Remember how much Mac OS 7-9 sucked? One reason was that every application had to re-implement all kinds of resource management code that the OS normally took care of. Shared resources, and a CPU is a shared resource even if you have dozens of the things, just as files are a shared resource and managed by the OS even though you have hundreds of thousands of them, should be managed centrally.

    This doesn't mean that the specific APIs devised to share single processors between hundreds of programs are necessarily ideal, but there's a hell of a lot of a difference between that and throwing up your hands and saying "let's just give each program its own VM".

  157. People are already rethinking the OS... by alexandre_ganso · · Score: 1

    ... for the multi-core era.

    Too bad it is not microsoft: http://www.top500.org/stats/list/34/osfam

  158. Those aren't really "automatic" by Estanislao+Mart�nez · · Score: 1

    Those options still require that the programmer choose the parallelization points (and therefore synchronization points) explicitly. That is a far cry from what you claimed in the grandparent post:

    See any functional language, eg Haskell or Erlang. Write a program in these languages, and the parallel-processing happens just about automatically.

    par and pseq require you to designate parallelization points explicitly, which already means that the parallel processing doesn't happen automatically when I write a program. OTOH you don't have to have explicit synchronization points; but using the value of the "sparked" argument causes synchronization at some unpredictable point in time (because of laziness). That's a minor issue, though; the bigger deal is that if you choose your parallelization points unwisely, you can get bad performance (through excessive low-level synchronization) or insufficient throughput.

    Data Parallel Haskell requires you to use special data structures, which also means that the parallelism also doesn't happen automatically. I either have to know beforehand where the use of DPC will actually be useful, or I'm going to have to modify an earlier program (possibly extensively) to make use of DPC.

    I hadn't run into Parallel Strategies already. Thanks for pointing that one out. I need to have a look.

    1. Re:Those aren't really "automatic" by Foolhardy · · Score: 1

      I didn't write the original post. I chimed in to say that you don't actually have to specify the threads and details of communication with GHC's parallelization extensions.

      There is no general purpose programming environment that I know of that completely automates parallel execution. Also, with ANY programming environment, you can make a very inefficient program if you do things unwisely. For that matter, some programming environments or styles are very different and it takes rewriting to adapt existing code properly.

      It's all about how easy and effectively the tools make it to do what you want. I think that GHC is among the leaders in concepts for parallel programming. The actual runtime performance is pretty good too, especially if you are willing to put some work into it.

      With DPH, I am under the impression (I've used it very little so far, so maybe I'm wrong) that you use the parallel arrays pervasively within the program (any place a strict finite list would do) and the compiler will do most of the work in determining when parallel execution is worth it. Also, Erlang's recommend style of many small processes scales very easily; the runtime will decide when to call through and when to allocate those processes to separate threads. These aren't quite automatic, but it's a LOT closer than the traditional thread & semaphore model.

  159. So let me see... by Anonymous Coward · · Score: 0

    I run linux. When I build a kernel, I can specify how many cores get used. Symmetric multi-threading, also known by a certain companies trade name "hyperthreading", causes the number of execution threads to double (on my core i7-920 it shows up as eight). When building a kernel, it shows 8 cores all running at 100%. When compiling any other program, I can also specify how many cores, and it uses all of them fully. When rendering a blender image, I can specify how many threads Blender uses (up to a maximum of 64), and Blender seems to use them all up to a maximum of 100% each (800% total). Now I know that Linux is used a lot on computers much larger than mine. I go to sites like www.top500.org and see computers with hundreds of thousands of multi-core processors, running at the same speed as mine or faster. These machines are usually not given jobs that take more that two weeks to finish. They are not multi-user machines, but single user, single job, 10,000 processors or 40,000 cores, taking two weeks to finish (larger jobs not accepted). Now if these computers with 10000 times as much power as mine, take two weeks to finish some jobs, why is it wrong for my computer, when computing pi to 750,000,000 digits, to take nearly half an hour? It consumes nearly all of the 12GB of ram on my system to calculate it out, and with my terminal spewing as fast as it can, 45 minutes to print out the results (if I can display 13000 digits on the screen at once, thats a measly 21 screen fulls per second). I suspect the problem might be that some jobs are just large. I suspect buddy is talking about spread sheets and word processors and clippy (he's a microsoft guy after all). My commodore vic20 had really great performance. If microsoft needs to look for performance, they should look to the vic20 as a way to make their systems better. After all, windows is only at 7, and commodore was already at 20. Thats nearly 3 times as fast. You can all thank me now.

  160. Re:Current architecture flawed but workable BUT... by Anonymous Coward · · Score: 0

    this'll hang your Explorer window for a couple of solid seconds

    Not sure what you're talking about here, I haven't seen this kind of behavior in XP for a while at least.
    Besides, I just attempted this, and for hosts that resolve, I am not seeing any appreciable delay between the time I press enter and the time that an anonymous ftp session begins, where anonymous ftp sessions are allowed.
    For hosts that do not allow anonymous ftp, there is some delay.
    For hosts that do not have port 21 open, there is no delay.
    For non-resolving hosts, there is no delay and an error message pops up.