OK, lets get the apology out of the way first. To my shame, I've spent most of my life in the MS/Dos and Windows environments. I know next to nothing about Linux.
I want to get a Linux desktop for performance reasons. I'm writing a very processor-bound piece of software. I will be multi-threading so that I can make wring every ounce of processing power from a quad-core chip (possibly 2 x quad cores). Having gone to great lengths to keep my database completely in RAM and the code multi-threaded, I don't want to spoil it by having Windows running wasteful and idiotic services all over the place. I've been told that it is possible in Linux to create a 'dedicated' environment that gives all of the processor over to the program. Please comment if my understanding is valid or flawed.
Also, without wanting to start a religious OS war, could someone advise whether SUSE or Ubuntu would be better for a Linux noob like me? Is there any difference when it comes to using Java tools?
I bow down in respect to your experience and wisdom. Thanks in advance.
Both SUSE and Ubuntu have services too, and they too require resources (processor cycles, memory). And yes, you can turn those off, but you can also turn off Windows services. Also, changing process priorities is possible on both Linux (nice command) and Windows (through the Task Manager). Granted, with Linux you can disable the GUI completely, but you'll have to do that yourself in both SUSE and Ubuntu.
If you want to have the kind of control you ask for, perhaps Slackware or Debian is a better option (less focused on the GUI). They are harder to install and configure though.
I've been working with Linux for almost 10 Years now because I like that you can easily start from zero and install and run only programs/services you really need. Of course this is more or less possible with Windows, too, like Rob said.
But even if Linux is a lot more user friendly than it was some years ago you have to pay a price to use an OS which is more configurable than Windows :-) It depends on how much you want to get from your OS of course. As long as everything works out of the box a modern Linux distribution like Ubuntu, SuSE or Debian will be easy to install (at least with standard hardware) and easy to configure for the basic things. But if things go wrong you may easily spend hours, days or weeks to figure out the problems if you don't have any experience with UNIX/Linux yet! This doesn't mean that this is a general problem with Linux but of course it CAN happen that something goes wrong and then I guess it will be harder to repair things with Linux. Just be warned :-)
The choice of a particular distribution depends on your experience and the things you're trying to do with the system. Do you need a GUI or just a server system? Will you need support service? I think Ubuntu or Kubuntu will be fine to start with. You can easily install it as a minimal server system or as a desktop system with a lot more features. I started with SuSE once but I don't like it any more which is more or less a personal choice. Personally I'm using Gentoo for the last few years and I'm very happy with it but this is definitely nothing you want to try as a beginner.
Besides these advices I really think that you should care about what David said! Choosing another operating system with which you don't have any experience probably will gain you nothing if you don't even know IF the OS is a bottleneck and where the bottleneck is. You can do really a lot of tuning on the layer of the OS with Linux and surely with Windows, too. But if it's your own application design which causes performance problems then no OS will help you very much The said Windows service for example may be annoying but as long as the do nothing they won't cost very much performance. If there's a memory bottleneck you can still turn the unused services off. Linux may be a little bit more minimalistic but with the distributions for "beginners" there will be some unnecessary services running, too, which you will have to turn off.
Anyway good luck with whatever you will be choosing!
I agree with David. You should take a look at OSGi as a way of speeding up your application first, then look at different platforms. That said, I have to believe that a non-GUI installation of Linux would be faster than Windows. Also you wouldn't have to reboot every few days.
There are lots of Linux distributions besides Ubuntu and SUSE. Have a look at DistroWatch for lots of information on many Linux distributions.
I like Ubuntu and use it as the main OS on my laptop. There are Linux distributions such as Arch Linux and Gentoo Linux in which you get a small base system, and you compile all the other software yourself from source code, which results in a system with software that is optimally compiled and configured for your specific hardware. But those Linux distros are definitely hard to set up and not recommended if you are a beginner with Linux.
Greg: OSGi is a way to modularize your application and to deal with large systems that have lots of dependencies etc. It's not something that will really help your Java programs run faster.
Jesper Young wrote:Greg: OSGi is a way to modularize your application and to deal with large systems that have lots of dependencies etc. It's not something that will really help your Java programs run faster.
Fast - One of the primary responsibilities of the OSGi framework is loading the classes from bundles. In traditional Java, the JARs are completely visible and placed on a linear list. Searching a class requires searching through this (often very long, 150 is not uncommon) list. In contrast, OSGi pre-wires bundles and knows for each bundle exactly which bundle provides the class. This lack of searching is a significant speed up factor at startup.
Lazy - Lazy in software is good and the OSGi technology has many mechanisms in place to do things only when they are really needed. For examples, bundles can be started eagerly, but they can also be configured to only start when another bundle is using them. Services can be registered but only created when they are used. The specifications have been optimized several times to allow for these kind of lazy scenarios that can save tremendous runtime costs.
First of all, I've been using openSuSE a lot for many years and have found it intuitive and fast.
Second, regarding your
I've been told that it is possible in Linux to create a 'dedicated' environment that gives all of the processor over to the program.
You can in fact customize your Linux to a point where it's using 640k of ram and 3,2 MB on your hard disk (though it won't look very impressive afterwards), but that requires a lot of expertise.
To make said task of customizing Linux a bit easier, Novell, the company which owns openSuSE, has begun to work on a tool named SuSE studio, which runs in the web browser. Using the tool, everybody with a bit of experience in Linux is able to create a really customized version of openSuSE for himself.
However, SuSE studio is still in Beta, and to get access, you've got to get an invitation. Well, I'm probably talking too much, just visit the site and find out for yourself.
@Greg: Ok, so OSGi can make certain things faster, such as starting up your application. But it does not make Java bytecode magically run faster. Tommy is saying that he needs raw processor performance. OSGi is not going to help his Java program get more computing power out of his CPU.
i recently switched from suse (11) to ubuntu (9.04). main reason was the magnificent support (e.g. http://ubuntuforums.org/) and it handled better hardware out of the box (in my case hp dockingstation).
While not one of your two choices (I've used SuSE and am typing this on Ubuntu 9.04) I run debian on my boxes where I want control. It can be installed to be nearly as user friendly as Ubuntu (which is built on Debian). Its also easy to turn off stuff that trades ease of use for performance.
But for serious performance, I just go buy a new computer. They get faster every few months. I'm typing this on a Core 2 Duo system, but I've got a quad system with 8GB on order and will get it late this week or early next week.