The Completely Fair Scheduler's Impact On Games
eldavojohn writes "We've heard a bit about the completely fair scheduler previously, but now Kernel Trap looks at the implications this new scheduler has for 3D games in Linux. Linus Torvalds noted, 'I don't think any scheduler is perfect, and almost all of the time, the RightAnswer(tm) ends up being not one or the other, but somewhere in between. But at the same time, no technical decision is ever written in stone. It's all a balancing act. I've replaced the scheduler before, I'm 100% sure we'll replace it again. Schedulers are actually not at all that important in the end: they are a very very small detail in the kernel.' The posts that follow the brief article, reveal that Linus seems quite confident that he made the right choice in his decision to merge CFS with the Linux kernel. One thing's for certain, gaming on Linux can't suffer any more setbacks or it may be many years before we see FOSS games rival the commercial world."
2. Point at foot
3. Pull Trigger
4. Repeat as necessary
Funny, in the article those framerates for Quake III show CFS beating the pants off of SD.
Besides, the biggest barrier to 3d games in Linux is video card drivers (ATI, I'm looking at you!) as 3D drivers in Linux, even the proprietary ones, have tended to be unstable.
Linus is right one this one, the scheduler is a small part.
Aren't going to happen until artists in the medium, 'good' artists rather, decide to start working for free the same way coders do. Some artists will work for publicity alone, bu they seem to be by far in the minority. On a technical level, I've not seen much problem with linux. Ogre, for example, runs quite smoothly for me.
Everything will be taken away from you.
This is irrelevant to the gaming front.
The limit to games on Linux is market share. Its not (much) easier to develop a good 3D game for linux as it is Windows, so why code for 2% of the market when you can code for 92% of the market?
Thus you will only get games where the developer has gone out of their way to ensure complete portibility and provides a port mostly out of courtousy.
The scheduler details are irrelevant for this: what Linux Games need is 10%+ marketshare on the desktop.
Test your net with Netalyzr
Perhaps people just don't want to run their games as root though....
I don't care if it's 90,000 hectares. That lake was not my doing.
Sounds like an evil circle.
To get Market Share you need games.
To get Games you need Market Share.
The CFS (Completely Fair Scheduler) won't, but maybe the new FCS (Flux Capacitance Scheduler) might. Or already did.
One of the reasons I like the linux kernel is because it's very modular. Why can't both schedulers be included in the kernel, and the person compiling the kernel set which one they want? Kinda like how you could select between Alsa or OSS, or a myriad of other feature that are different but serve a similiar purpose?
I've used linux quite a bit before.. but it is always stuck on a 2nd or 3rd box I have around. I love the new Ubuntu...
except.. gaming support on linux is shitty. The games I have run on linux worked okay - but it took hours to set them up properly. Unreal Tournament 2003 is the last one I played on linux that had a linux port available..
I play games about 10% of the time I use my computer.. nonetheless, bad gaming support is what keeps me from using Ubuntu 100% of the time. I do not feel like having 2 operating systems intalled on my computers.
I'm not a 'gamer' by any means.. but games are important enough to me to keep me using Windows.. I would love to switch.. but I'll switch when the linux coders decide to push for a more compatible gaming system.
--- We need more Ron Paul!
I wonder if I use bold in my signature, people will notice my posts.
I have Windows XP and Gentoo Linux running side by side, and strangely, Gentoo scores 10 to 12 FPS faster in World of Warcraft, Warcraft III and even Doom 3. Granted they are commercial games, but if they can run in WINE that fast, I wonder what a direct Linux implementation would do. I just love seeing folks buying the headlines instead of blazing their own paths.
That's why the world is in the shape its in... the majority is always waiting for someone to save the day. You want desktop Linux? Then make it your desktop. Otherwise stop bitching and post some valid comments.
" What luck for rulers that men do not think" - Adolf Hitler
One reason (probably why you can find games for macs): you'll have far less competition. Having 50% of 2% of the market is better than 0.5% of 100%. While the Linux gaming market is small, it's pretty unsaturated. There's got to be other reasons for lack of gaming on Linux.
That is why Linus should have listened to Con Kolivas when he tried to introduce a pluggable scheduler system. With a modular system we could have CFS and the staircase scheduler and both problems solved.
Personally, I'd like things like schedulers to be pluggable. But that's just me. Or maybe not.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Because the 0.5% of 100% has a much greater potential for growth ... pump up the advertizing, work up some new expansions/tie-ins/etc. and build your market share. The 50% of 2% has stagnated.
Schedulers are actually not at all that important in the end: they are a very very small detail in the kernel - Torvalds
Actually, I'd like to see the OS kernel consist entirely of only the scheduler and the thinnest APIs to secure drivers granting access to the HW. Everything else, including IPC, could be in userspace.
That would make distributing the OS a lot easier. And the simplicity could be a lot easier to secure, to develop for, to customize a deployment for minimum HW (like eg. a "self-winding" 10mW Bluetooth ring with "accessory" features). Practically every device could run the same "OS", with modules bolted on for increased functionality on heavier HW.
--
make install -not war
...something more probable, like making GIMP a killer Photoshop clone or something. Games is just such a competitive and tricky market, and I wonder if there would really be that many Linux people willing to pay for them. Seems like many Linux people in the desktop space are high school and college kids.
Games and Visual Studio (10%, 75% respectively). Even the freebie versions beat the crap out of any IDE I've seen for linux. Yes, I've used Eclipse and the other major players...
I'm not a gamer at all, but for years I've said that Quicken was the only thing keeping me from switching Linux full-time. (Yes, I know there are FOSS bookkeeping packages out there. Quicken is excellent, though, so any switch is a step down in my mind.)
Then I realized it doesn't matter which operating system I run as long as I can do what I need to do. I was only trying to switch to Linux for ideological reasons, not for any practical reason. The act of switching over was going to involve a lot of time, effort, and possibly expense, and if there was no "business reason" to go through all that, it would largely be for nought. If I had a mission-critical app I needed to run that only ran on Mac or Linux or whatever, then I'd switch, but I'd have to jump over with both feet. I don't want my music, pictures, documents, finances, etc., spread all over multiple machines (or multiple partitions of different types.) My mission-critical app is Quicken...so I continue to run Windows.
So don't look at it as "I'd switch over completely, but..." Instead, look at it as "Apps drive the OS I use. I need the following app(s): ________, which is/are well supported on _______, so my OS is ________."
"One of the reasons I like the linux kernel is because it's very modular. Why can't both schedulers be included in the kernel, and the person compiling the kernel set which one they want?" - by jshriverWVU (810740) on Tuesday July 31, @12:28PM (#20059031)
Great question, jshriverWVU!
( & though I am MOSTLY a "Win32 kind of guy", I am curious myself on this note you bring up, also!)
Hey, Penguins? Since this OS comes with source? Why not allow users this choice for Linux OS installs @ setup time (the ability to choose between SD scheduler (Con) & Completely Fair Scheduler (Ingo))...??
APK
P.S.=> I am personally SURPRISED that Linus Torvalds did NOT include this as an optional build you could install (a "gamer's & multimedia person's core/kernel" in essence) @ setup time for Linux, because it IS doable (kind of like how NT-based OS can install a singlecpucore build, vs. a multicpucore build)...
Maybe, JUST MAYBE? This does point to some "egomania" & personal like/dislike stuff on the part of Mr. Torvalds (favoring Ingo OVER Con etc. et al)... who knows, except those 3 people, & L.T. most of all! apk
CFS actually beat out the outcast scheduler ...
I've figured out how to get games running with Linux!
1. Set up your Linux system. Use onboard video and don't overspend on your processor.
2. Buy a PS2, a Wii, or a 360.
3. Play games on your game console and do everything else on Linux.
People seem to forget that someone actually tried to build a company on Linux games. It was a disaster. The trouble wasn't the OS. The games ran great. The trouble was that no one (but me, I guess) bought them.
The cake is a pie
Its typical in Zonk's topics that something like this gets 0 as mod point.
As you said choosing scheduler can be done in kernel building so all this mud flinging is assanine IMHO and just shows how little so called gamers know what Linux is capable of.
From TFA
I think he needs more CSF (Cerebrospinal fluid) to nourish his brain cells and alter their troll-like behavior.
Con's SD scheduler is light years ahead in terms of desktop computing and gaming. The "Completely Fair" Scheduler is not. Linus made a poor political decision that once again favors the multi-CPU, gobs of memory, server architecture that normal people don't give two shits about.
Actually the quote from the in the summary from Linus is part of a larger email where hes dismissing the idea of using the plugscheduler (I can't seem to recall the exact name) that would make the CPU scheduler plugin based like the IO scheduler currently is. His reasoning against it were largely BECAUSE what they learned from having the IO scheduler plugin based and its something Linus as well as the subsystem maintainers DON'T want to repeat.
Anyways, you can still just apply Con's patch to the kernel to use his scheduler instead of the old scheduler (and if he keeps maintaining it, you'll be able to use SD instead of CFS). Don't forget that we haven't even had a kernel released using CFS!
For your theory to work, people would have to buy whatever crap game is put out. Put out a crappy game, and you'll not likely even get 50% of the 2% market.
People seem to forget that someone actually tried to build a company on Linux games. It was a disaster. The trouble wasn't the OS. The games ran great. The trouble was that no one (but me, I guess) bought them.
Huh, I thought it was because the CEO was embezzling the money?
OS X is for artists and people really into style.
Linux is for hackers and various niche environments.
Linux does not need to support gaming. Windows does that quite well. Anyone that wants to game can dual-boot with Windows, or buy a console. Linux will not support gaming, for the same reasons AIX or Solaris are not chock full of gaming goodness. It isn't required or desired, and the OS is far more suitable for other, often more "serious," applications.
Slashdot: Playing Favorites Since 1997
Con has already said he will no longer develop it or any other kernel development because his scheduler was not chosen.
I dont read
Moreso it is false to say "most major games" (my emphasis) are built from these engines. Quite a few are yes, but sometimes the technical baggage of the engine is so great - in that steers design directions - that it's cheaper in the long term for a game development shop to author their own engine in-house.
Furthermore you can't beat the freedom of being the legal author of what you use.
Even if you can afford to license an existing engine - or use a FOSS engine like QuakeIII - it's still an expensive and time consuming task to make the actual game. A good example is Half-Life 1: it was a direct architectural relative of Quake2 yet it still took years and costed millions in labour to make.
Programming and game-design aside, don't underestimate also just how long it takes to make the art.
Only three things are certain; death, taxes, and apocryphal quotations - Ben Franklin.
Ever heard of DirectX? While some of the engines that you mentioned may have the option of using OpenGL or DirectX, I don't think many hand-rolled engines do.
From what I've heard, Loki didn't die due to a lack of customers. They died because of personnel problems, and because their profit margin wasn't good enough to make up for their other shortcomings.
-- The act of censorship is always worse than whatever is being censored. Always.
When there was more than one OS that ran on different HARDWARE, games could be differentiated and selling points could be made for buying an Amiga, or an Atari over the Mac and PC of the time.
Other than Security, to the average user who is using Windows there just is'nt the "Whoahh" that people used to get when somebody back then saw the Amiga or Atari. Compelling reasons just don't exist for the average user to switch from windows to LINUX except maybe fear of viruses and malware.
For games to take off on LINUX there needs to be a game done on LINUX for LINUX ONLY that everybody wants and does something on LINUX that CAN'T BE DONE on windows. When I saw what the Amiga could do commpared to the PC I KNEW why I wanted one.
Granted the Amiga was as much a hardware advancement as OS, but the point was the average user could understand why they needed it.
Why not just write a cross platform game instead of a Linux or Windows game? It is actually easier than writing a DirectX game, because of the advanced libraries. Try writing a game with Irrlicht-library for example. You can even select whether to use DirectX or OpenGL as a rendering engine for the same code you write and it takes only about 20 lines of code to write a working program that will load a 3D-object from file and display it.
http://irrlicht.sourceforge.net/tut012.html
If you don't like Irrlicht, you can always use Ogre 3D or Crystal Space or even SDL with OpenGL.
1. Linux machines
2. Development setup
3. QA
4. Support
5. Platform-specific APIs added to, say, make shortcuts or turn off screensavers or whatnot
Part of this can be solved by rogue developers, but not all. And believe me, once a developer is accustomed to the system, he'll realize his effort is in vain because no management would let him release untested and unsupported code, nor would management want to test or support something with so little ROI (return on investment). You could invest that money and time into something that will get you $, or you could invest that on something that will get you $$$$$ - it's just smart economics to work on the next Windows thing than the Linux thing.
If you start working as a developer, you will come to realize these realities someday.
Buckle your ROFL belt, we're in for some LOLs.
There is also typically a lot of customization done to licensed engines by the licensees, at least according to my game dev friends. Even if the engine is more or less cross-platform out of the box, it seems unlikely that it will remain that way for long unless it's a specific goal of the developers working for the licensee.
Given how many complaints I've heard about the Unreal engine in general, I'd have to imagine that with the apparent headaches of getting licensed games to run right just on Windows and the 360, only a really dedicated game developer is going to target Linux as well.
"...always new atoms but always doing the same dance, remembering what the dance was yesterday." -Richard Feynman
I keep wondering...X is a single threaded server, communicating with a (generally) single threaded game. Worse, wine inserts the wineserver process, so I have three single threaded things trying to synchronize to get interactivity. A low latency event like a keypress might require all three processes to be scheduled in succession, to get a response on the screen. A poor man's way to do this is with the kernel's scheduler, but a far superior way to do it is to have multiple threads in the X server. Scheduling an interactive event isn't hard. Getting crap on the screen in the same scheduling timeslice is hard (impossible?) since it requires a second scheduling point. As I understand, this is how BeOS achieved substantial interactivity in the presence of load -- my having a multi-threaded graphics server *and* kernel.
So, how much can be gained by rewriting X, or going to a different graphics server? Or do I completely misunderstand the effect of X?
-- Bob
1^2=1; (-1)^2=1; 1^2=(-1)^2; 1=-1; 1=0.
Screw you guys, I'm going home!
"I'm not a gamer at all, but for years I've said that Quicken was the only thing keeping me from switching Linux full-time."
I actually prefer to run Quicken in a VM. I can backup the whole VM partition. I can run a version of Windows that's fully tuned to the application. It has a very small footprint. I've been doing this for almost ten years already.
I *greatly* prefer it to running it on a native Windows boot. I'd almost go as far as to say, if I had to run Windows, I'd probably start doing finances on paper.
-fb Everything not expressly forbidden is now mandatory.
Both SD and CFS are superior to the old one. Between the two, the one that gets merged into mainline will be the best eventually.
There were a lot of testers when SD came out, because it clearly beat the pants off the old one, and that was exactly why Ingo went ahead to throw his own version of a fair scheduler - otherwise his code would not survive.
Which one is better, SD or CFS? Technically, it was hard to say, but it's not about technology - it's like the browser war, the one with the bigger market share wins. CFS has been merged into mainline and gets the biggest exposure, so there are hell a lot of more testers and developers attention, and with a genius like Ingo, it's only a matter of time that CFS will perform better than SD - the latter has been simply ignored since CFS was out.
So arguing which one is technically better is not the point. It's like people kept arguing Netscape was better than IE. But the fact is IE eventually outperformed Netscape even technically.
A lot of people who watched the whole thing on LKML consider the decision of merging CFS was unfair, but few really worried that we'd have a worse scheduler in the long run. Get your Cause and Consequence right.
Minix!
This sig is intentionally left blank
Usability research has shown, that variation in waiting time is actually a bigger irritation for users than waiting time itself.
I have seen several projects, where user interface response time problems have been "improved" by making adding a minimum response time. The average response time increases, but variation decreases, and the user often reports the program as having become faster... the logic to this seems to be, that the user wants the user interface to have a predictable response.
I think the reference for this is Søren Lauesens books about usability programming, but I cannot remember for sure right now.
For me, the situation is reversed. If I have a free computer (and I usually do), Windows goes on it. Linux sits on my server and my laptop. If I want to game I use Windows, but for regular stuff like web, music, and movies I use Linux.
Also, Wine is *really* good right now, seriously. I'm running slightly older games like Half-life and Diablo II with full speed and no glitches whatsoever. I can use Steam, which has IE api calls, with NO dll's from MS Windows. I hear HL2 works with some tweaking, but if you don't feel like tweaking, that's why you keep a gaming machine around =P
Seriously, Linux is the best for everyday stuff and getting work done. Windows has it's place for niche applications. Why not treat them like that?
Free and open source is a horrible model for any non-subscription based games. Think about a game like Oblivion, for example. If Bethesda had released that under the GPL, where would they make their money from? Unless you make money from subscriptions, like Second Life or World of Warcraft, FOSS games make no business sense.
The problem is that it's also not worth doing games for 0.5% of the 100% market. Well, 0.5% might be worth it (I don't know the exact numbers), but my point is that if you aim at such a small windows market that linux seems comparably big to it, any publishers interest in your game will drop seriously.
For Mac it's true to some extend as the Mac market is already larger. For example GarageGames (one of the companies doing mac-versions) once state that they sell more games on mac than on windows. But only about 10% on Linux.
Still you are partly right. On the linux market you can still stick out and that's good marketing. I think a lot of companies are missing that.
Sounds like an evil circle.
To get Market Share you need games.
To get Games you need Market Share.
Maybe, but it's not "To get Market Share you need games which rely on heavy 3D loads". There's plenty good games on Windows that could just as easily have been on Linux. I also don't think it's the best or easiest way to go, the OSS model is best at creating something that's continously improved. I don't want to play the same game over and over and get a "better experience" each time, not unless it's got really compelling multiplayer. Most games I play, I want them released, fairly stable and playable, play it, (play expansion, play user-generated content,) shelf it. I tire from every game, no matter how good within some months. OSS just isn't ready for that kind of "release 1.0" that I want.
Live today, because you never know what tomorrow brings
True on one hand, false on the other. Let's see how the PC became the "game machine" it is today. It wasn't that for a long, long time. Actually, some 20 years ago, the PC was anything but a platform suitable for gaming. There was the C64, there was the Amiga, all machines that were first of all cheaper and second heaps more suited for gaming than the PC, offering better graphics, better sound, better handling, more input devices and were pretty much geared for gaming. So why did the PC platform "win"?
The answer isn't simple, but I'd guess two factors play a key role here. First of all, it was perceived as a "business" computer, especially by parents buying a computer for their kids, rather than a "game" computer like the C64 or Amiga. More important, though, I think was the fact that it was heaps easier to upgrade the PC compared to the other hardware platforms that were pretty much set in stone. The A500 was the best computer for games when it hit the market, but it did not scale up. It was very hard to upgrade and you soon hit the limits. Also, Amiga made the big mistake and tried to keep the A500 as its main seller for longer than its lifetime allowed.
Now, how does this translate to software and OS? Well, Linux is modular, if anything. it allows speedy, easy and painless upgrading, compared to a Windows upgrade which pretty much means "throw out the old, bring in the new". It's also easier to keep "legacy software" running.
Maybe we shouldn't try to get the latest games onto Linux. Get the greatest games there first. I'm fairly sure that you'll attract a lot more people that way, and convince them of the platform. I doubt that a lot of Linux enthusiasts are there for the eye candy. They want sensible gameplay and good, solid entertainment rather than spectacular explosions with a storyline as deep as the average puddle forming in a rain. And such games are usually not really impossible to port without a staff of 200 dedicated artists and coders puzzling it together for over a year.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Well, you could see it another way, too: If there's nobody but you creating games for Linux, you can essentially create a game that's been state of the art 3 years ago and still make a buck, something you can't do in the shark pool that Windows game developmnt is.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
I'm looking forward to the Knows-About-IO Scheduler (KAIOS). There's no plans for it yet, but I'm sure one of these decades they'll get around to it.
Of course, because as we all know, it is only possible to write FOSS for Linux, and not for any other OS. Like, say, Windows, for instance.
No he did not say that. He will no longer develop it, but he did _not_ quit because his scheduler was not chosen. I don't even know why so many people think so, maybe because it would be the way they would act?
Yeah they are too busy bitching about the difference between CFS and SD.
And then the news post here, says "Linux cannot suffer any setbacks in gaming". I think you'll find that compared to the original scheduler, CFS pretty much rocks for gaming. As much or less than SD, who the fuck cares?
It's better than the original scheduler, so where's the setback?
If it's not as good as SD, oh well, cry me a river. I don't agree with Linus' "there is no maintainer" idea, but more the concept that CFS removes more lines from the kernel than it replaces, and does a better job, whereas SD adds complexity for roughly the same effect. What could be a perfectly good technical reason in previous LKML posts got turned into politiking.
Difference between SD and CFS.. fractions of a frame per second. WOW. That really means Linus made the wrong decision! The impact on games, where 1/500th of a second really MAKES A DIFFERENCE is too high! Put the old scheduler back you fucking crazy-ass Finn!!
Lets not forget the intellectual theft perpetrated by Ingo Molnar. No matter how things turn out the guy is a liar, a thief, and a cheat. He sucks.
Ingo fought long and hard for the status quo. Complaints against the current O(1) scheduler (author: Ingo) were met with flames and ignorance. Con spent a year developing a new scheduler and proving that it was better than the scheduler that Ingo wrote. Ingo spent the entire year ignoring and denying Con's scheduler, but one day he saw the light and wrote his own knockoff in "62 hours" and gets it merged the next week. This is bullshit.
The end result is that Con has been driven from Kernel development by asses like Ingo. Whether CFS is better than SD is irrelevant. What has happened is the guy who spawned the entire process of getting an improved scheduler in the kernel and spent a year overseeing and improving it has his concept stolen by Ingo. Ingo did not want a new scheduler, he wanted his name to be on the current scheduler. When he saw that disappearing he had to take drastic action and he "authored" a new, improved scheduler. All for his own glory.
Ingo sucks.
``The trouble wasn't the OS. The games ran great. The trouble was that no one (but me, I guess) bought them.''
Now there's an interesting train of thought. Maybe the problem isn't that the Dammed Game Companies hate Linux and don't want to develop for it.
Maybe the problem is that the Dammed Linux Users hate paying and thus won't make game developers that target Linux rich.
Please correct me if I got my facts wrong.
Gaming is the main reason why people buy new computers at home. But I believe that gaming support on linux will improve soon. The reason I believe that is that in the last years the independend gaming scene was growing very fast and we care a lot more about linux than the big companies. Just check companies like Chronic Logic, GarageGames, Wolfire Software which all release linux version. And I'm far from naming them all. I did only recently join this scene, but I found out that for a small company it's actually rather easy to release Linux+Windows versions. There's not much of a technical challenge if you are careful when choosing your libraries. Maybe it's even a little easier because we can develop on Linux which has some advantages ;-)
The real obstacles with developing a commercial game on Linux isn't the performance or technicalities of developing the game like it was years ago; it's distribution and support.
Linux has plenty of horsepower and driver support these days to run even the most demanding 3D games and the development platform is consistent enough with Windows to make porting issues or cross-platform development a manageable, almost transparent task.
The big obstacle is distributing and supporting a game for Linux. For a third party developer such as a commercial game developer, packaging and releasing a game for Windows is a relatively easy, standardized task. A commercial developer knows that once they develop the game for Windows it's going to work as expected on the greater majority of consumer Windows machines in existence; even those running older versions of Windows and most likely will run on future versions of Windows. The commercial game developer generally does not have to worry about new hardware coming not working because of lack of drivers or new releases of the Windows OS coming out every 6 months that causes their product to stop functioning and needing fixed constantly. The commercial game developer doesn't have to be concerned with what other Windows developers are doing and whether changes going on in another area of the OS or applications being developed are going to effect their game development. Furthermore, the commercial game developer doesn't really have to spend extra effort dealing with multiple versions of Windows; for the most part Windows is Windows.
Contrast this with Linux, where there are literally dozens of recognizable distributions, none of which have an appreciable majority marketshare and many of which change dramatically every few months. Trying to maintain a game and keep it working from one version to the next of a single distribution is a sizeable task; trying to do that for dozens of distributions becomes prohibitive which is what a commercial game developer would have to do if they truly intended to support their game properly. And after all this effort, what would the effective sales increase of their game really be? The economics of properly distributing and supporting a game just isn't worth it.
If Linux really wants to be a practical target for commercial game development, it needs to bolster itself in the areas of distribution, support and platform compatibility stability. This will in turn not only make it more feasible for commercial game developers to consider targeting Linux as a valuable platform but improving these same factors would apply to all application developers and increase marketshare and commercial viability of Linux. If that is the desired effect, of course.
Runesabre
Enspira Online
Oh please! You'll be talking about FOSS porn next!
Well then, everyone, let's head over to Project Peach: http://peach.blender.org/
Yes, the blenderheads are at it again, and they are doing a game this time...
[--- PGP key and more on http://www.root42.de ---]
No mod points for me today, but I notice this in day-to-day work all the time. I'm very interested in references to studies like that as I think it says something that could drastically improve the non-gaming Linux desktop experience.
I think one of the reasons scheduler debates might be so popular, is that it's one just a few parts of an operating system that are easy to understand and also heavily emphasized in introductory computer science classes. Schedulers do matter in terms of user-experience, but in terms of overall performance they theoretically shouldn't make that much of a difference(except for the cost of switching tasks). I think that's what Linus is getting at when he says it's a small part. Previous schedulers worked fine, but this one allows a little bit "smoother" user experience.
That said, here is one example of how schedulers affect the lives of users:
I tend to play with the nice values of shared servers at my work place(It's nice to be the administrator.) when I'm compiling on the same machine as someone else who is running a simulation.. The compile time for my primary project(on an unburdened system) is around 20 minutes for a full recompile, while the simulation might take days to finish. If my compile process is equally nice as the simulation process it takes approximately double the time to complete, so I end up reading Slashdot for an extra 20 minutes and the simulation runs for about an extra 20 minutes. That's great on a day when I don't have deadlines to meet. When I give my compilation priority, I may see the compilation finish in 25 to 30 minutes and the simulation will run an extra 30-35 minutes as a result of my compilation. So I save 15 minutes on my compile while my coworker never notices the difference even if I do a full compile 10 times in one day. So the scheduler allows me (the interactive user) to work more productively.
Anyway, I don't know if that example was needed, but I hope it was helpful for someone.
Did Linus all the sudden lock out all other potential schedulers? Was the choice taken away? Root usually needs to install such games, and it's no big deal to change them at runtime, so relax, aye?
--- For a good time mail uce@ftc.gov
Does anyone know what types of scheduling Windows XP and OS X use? It seems OS X grants highest CPU priority to the application process whose window is in focus, which seems to work very well. Would any type of communication between X.org and the linux kernel be possible to enhance process scheduling? Or is this already done? It seems natural that the (user) interface should talk to the kernel, even at a low level, to ensure overall OS responsiveness. After all, strictly speaking the user never really uses the operating system-- they only use the interface.
It might be nice if there was a mechanism whereby a priority queue was maintained with pointers into the red-black tree or other data structures used by the CFS module so that the superuser could designate that certain programs, identified via cryptographic hash, are special and should receive first consideration for scheduling while they are running. For example, during normal operations the priority queue would be empty and the CFS would handle scheduling in the usual fashion. However, once certain processes were loaded into the CFS *and* put into the priority queue (not every process goes into the priority queue, only the designated special ones), the CFS would know to check the priority queue when scheduling to see if there were any special processes running so that it could give those processes first crack at the processor and other resources in order of their priority (there could be multiple special processes running at the same time as well). In gaming, for example, it is usually the case that the user is focused entirely on the game and not on other processes running in the background so it would make sense for the game program's hash to be in the special priority queue so that it would receive top billing while it was running. It would also be possible to use this mechanism for other more usual processes (say on a server), but the CFS alone would probably be sufficient for most server type scenarios. The special scheduler add-on would really only be useful for special scenarios such as gaming, graphics rendering, and other long running and high demand processes. Perhaps something similar already exists, but I am not a Linux kernel programmer so maybe I just don't know about it...
The limit to games on Linux is market share. Its not (much) easier to develop a good 3D game for linux as it is Windows,
Stupid assumption. If that were the case then we would all be running Amigas because DOS/Windows sucked for games.
Pehaps there was another compelling reason that DOS/Windows won? Think Price (Cheap).
Enjoy,
The limit to games on Linux is market share. Its not (much) easier to develop a good 3D game for linux as it is Windows, so why code for 2% of the market when you can code for 92% of the market?
Why code for 92% of the market when you can code for 100% of the market?
Games maybe cpu hogs, but the person playing the game probably thinks that whatever is causing the lag is the pig. I think that is the whole point.
The computer should spend cycles on the things the user is interested in, it should not be optimized primarily for the big service companies. The linux camp in 2007 just seems like some alternate dinosaur-computing reality: IBM, Sun, Novell, Oracle. I don't think of free or open when I see any of those names and I'm sure that none of those companies want to take computing in the direction I favor.
In the computing world, the enemy of your enemy is not your friend.
If you look at the most popular games today you'll notice at least a couple of them are heavily dependent on user created content and are continuously improved.
Half Life(1+2) and Warcraft 3 are great examples of this.
Games like this sounds very suitable for the OSS kind of model. If an OSS team could create a game engine with a map editor as powerful and easy to use as the one that comes with Warcraft 3 I think they could make a very competitive game even if the graphics is way below par. Just look how Warcraft 3 is dominating CC 3 that is allot newer with massively better graphics.
Or if they could write an FPS with the level of graphics of Half Life 1 would be enough if it allowed the community to easily create mods that might compete with Counter-Strike and Team Fortress.
http://www.xfire.com/cms/stats/
The OSS community has the ability to create competitive games if they wanted too since truly great games aren't about resource intensive graphics but about great preferably moddable game play. It wouldn't surprise me if there are already games like that out there that I'll never hear off because of the difficulty of marketing a game without a marketing budget.
The interesting thing is that a lot of the greatest games should already work on Linux. Since all of Blizzards games work on both OS X and Windows they should work on Linux too right? That makes Linux capable of playing all games I'll ever really want.
The problem is I think that there isn't any official support for Linux, if games companies would be willing to fully support atleast one Linux distribution I think a fair amount of people would be willing to take the last step. It would also help if more companies switched away from DirectX and started using the more compatible OpenGL.
I play Oblivion using Wine on Gentoo. With a some .ini file tweakage (all spelled out at the uesp.net wiki), I actually get a better gaming experience under Linux than Windows. Surprisingly, this is mainly due to the fact that the Linux device drivers perform better than the Windows device drivers for my hardware.
.ini file, but you have to go through the trouble of setting all that up, and you have to be willing to live without a few graphics effects.
Under Windows, the audio drivers for my built-in audio chipset (ICH8) on an Intel DG965 mainboard have trouble mixing multiple channels; the audio stutters when casting spells, for instance. Also, the gameplay is smoother under Linux than it is under Windows; I suspect this may be due to the IDE block device drivers for the DG965 board's controller, since the stuttering seems to coincide with disk access (DMA problems?). None of these hardware-related issues show up under Linux; all the audio plays without stuttering, and the gameplay is much smoother. This is all using the device drivers that ship in the mainline Linux kernel; no mucking with any drivers is necessary.
Of course, there are problems with Wine. Any version past 0.9.38 either does not work at all or crashes when you're running around in an outdoor part of the game. Trees sometimes render strangely; it seems that one of the vertices of some of the leaf objects is at the bottom-left corner of the screen, so sometimes streaks of tree leaves go across the screen. Water cannot render at more than a few frames a second, and refraction effects can make everything turn puke yellow/green. Most of these issues can be worked around by disabling the effects in the
Overall, there are problems with running Oblivion under Windows and under Linux+Wine, but I would rather live with the problems I am having under Linux rather than the problems I was having under Windows. Frankly, I am amazed that the Wine folks have managed to get something like oblivion running as well as it does.
An unjust law is no law at all. - St. Augustine
"Linux is for those who hate Windows, BSD is for those who love Unix" becomes more true every day.
If game coders and hardware manufacturers got their heads out of their asses, compatibility wouldn't be an issue. They need to fix their shit, not the OS. Linux is Linux, people need to quit trying to turn it into a halfassed Windows clone. You want compatibility? Ask MicroSoft to release a DX9/10 library for Linux (or better yet, for BSD, as invariably Linux will "borrow" it much like OpenHAL anyway), or give permission to develop one outside of a clean room. Good fucking luck with that. Until then, please stay with Windows.
If cross platform requires more than 10% additional effort, that's why...
Test your net with Netalyzr
"The limit to games on Linux is market share. Its not (much) easier to develop a good 3D game for linux as it is Windows, so why code for 2% of the market when you can code for 92% of the market?"
You can't make a business case in two sentences.
How big is that "2%"? How many sales could you expect? What is the cost of porting? Can you make the design to make the cost of porting lower?
I think that 2% is actually a decent number. I also think that making a game easy to port to both linux and mac will raise the market share significantly - in otherwords, if you can port to mac, it's probably an easy task to follow-up with linux.
So it's a question of a businessman spending a few days making an honest, mathematical assesment to see if there is a viable business plan. If there is, you do a quick prototype to see if there are any unforseen hitches. Assuming none, you and assuming your projections are reasonable, then you can make more money.
To be honest, I suspect most businessmen, rightfully or not, feel that linux is a hacker's/cracker's/pirate's platform, and don't feel there is a market there and thus don't follow-up with hard numbers.
-Jeff
Please learn the difference between a dissenting opinion and a troll before you moderate.
Loki started in 1998 and closed in 2002. Linux is a heck of a lot more popular now than it was back then. Popular enough? Perhaps not, but you can't use the 5-9 year old Loki experience as an argument for why Linux games can't work today.
http://outcampaign.org/
The commercial game developer doesn't have to be concerned with what other Windows developers are doing and whether changes going on in another area of the OS or applications being developed are going to effect their game development.
Ah... nail... head.
Distros, packages, rebuilds.
The only way to avoid these is a live CD. Build a custom build for your game; tweaked, trimmed and optimised. No dross, no unnecessary mailer daemons running in the background. Nononono. Just enough to run the game.
The best part of this? It doesn't care which OS you run normally. Windows boxes, Linux boxes, Macs... they're all the same beneath the lid now. 92% potential market share? Pshaw. This'd be more like 98%.
And that's not all -- my goodness: insert DVD then start the PC. Just like a console. How much more user friendly can you get?
HAL.
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
Since when does a Wii run Linux except in GameCube back-compat mode, which can see only half the Wii's RAM and can't see a USB keyboard or mouse? And since when does a PS3 have even 2D accelerated graphics hardware, so that moving windows around in X isn't jerky?
(By "since when" I ask for a year and month with a citation.)
Apps don't drive the OS I use. Apps are expendable -- if you can't switch to another one at the drop of a hat, should doing so be required, you're doing something wrong.
... not trusting anyone else with those.
I use Konqueror and sometimes Opera, but if I had to switch to Firefox it would be no biggy.
I'm using Thunderbird right now but thinking of switching to CONE.
I write my OWN PIM suite and financial apps, thankyouverymuch
And I run Linux because it's technically the best operating system out there. But if Solaris has a few more home runs like ZFS I might switch that.
The OS is just a really big, really important app. Sacrificing it for lesser apps is a bad move.
vi ~/.emacs # I'm probably going to Hell for this.
Ray Kurzweil was on Coast to Coast AM a couple of weeks ago and talked about transhumanism, which apparently is the term for augmenting ourselves with computers and evolving ourselves to the next level of humanity. It was pretty neat, if you have the means of listening to repeats of that show I would suggest it. You might want to check out alt.binaries.sounds.radio.misc if your ISP has a decent retention level for Usenet. People tend to post Coast to Coast on that group as well as others.
Ok, you are right that the scheduler might not be the most important part. Heck, I can't even understand why Linux can't ship with many different ones and let you choose when you build the kernel or with some system utilitity. Solaris offers a range of different schedulers.
;)
Anyway, what Linux needs is GAMES, not functionality. The best way to help with the situation would probably be to write and release some quite simple games, maybe downloadable for free but with monthly fees to make more people pick them up and then get stuck
If you're someone who will run Linux to play games you are probably smart enough to choose Nvidia anyway, but what does good 3D drivers help when there are no games to play?
Most major games are written using pre-made engines like Unreal, which typically are cross-platform.
iirc epic at least charge a large ammount of money for each extra platform you want.
note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
Of course a fair scheduler will cause a single process to yield its CPU time- that's the point. It tries to spread the system resources out among as many similarly-niced processes as possible. Now if you want your game to run better than something else, why not renice the game -1 or renice the other stuff +1? I do this all the time to be able to run extremely compute-intensive processes in the background on my system and it makes them pretty much invisible to me (as long as they don't eat up all the RAM or do a lot of HDD I/O, of course.)
Just "gittin-r-done," day after day.
Is there an option or a patch for Linux that runs the highest priority tasks first and then the lowest ones? i.e. task PuttingOutFires gets all the cpu even if MakingDinner and TakingOutTrash want time?
The thing about Linux is, why doesn't someone just make a pro-gamer distro? It's open source and GPL, so there is no reason why this can't be done.
Optimise everything for 3D acceleration etc. Bundle a bunch of open source games for the heck of it.
Or is there already such a thing? If so, what is it?
I am government man, come from the government. The government has sent me. -- G.I.R.
That's some funny shit. My line of thought started out the same but --- 'hit someone over the head with it?! Lucky you're on slashdot else your GF would be pissed!
Here's an idea: why doesn't someone in the know create a 'game development' library base which could be dropped somewhere in /usr (or /opt or whatever's standard today) and be used as a stable-as-debian, cross-linux library base for games. Include all the standard things like SD, and optionally have them built to local base libraries - or whatever else is needed, I'm not really up on specific gaming libraries. But, at the least, it'd create a stable environment which game developers (and proprietary application developers, for that matter) could develop towards in the same fashion that they do for Windows.
Another idea, or possibility: while I'm not 100% sure it's possible or preferable, why not use a 'scheduler scheduler' to allow for active switching between scheduler profiles in a manner similar to how ACPI and APM work? I'm not going to want the same behavior while doing 'office' work as I would while watching a movie or gaming. It'd not make much sense on a server, I don't think, but on a workstation the ability to switch between task-oriented micro-schedulers seems like a pretty good idea, even if there's a several-percentage point processor performance hit. I imagine the loss would be made up in more task-appropriate performance if the user could be allowed to customize it: use x scheduler when x1 and x2 binaries are running, and y when y1 and y2 are running...
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
And, anyway, why should you as an end user bother about your OS being "best technically"? For example, does it really matter to you what algorithm the scheduler uses, as long as the end result - the picture on the screen - looks right (for your definition of "right")?
> Apps are not expendable. If they have a certain features that no other applications have, and those features either make things previously impossible possible, or cut down the time needed to do something, then those features are what you want, and you don't care what OS runs under the hood.
... most apps that run on Linux also run on the BSDs and Solaris; porting between Unixes is easy. The main reason I currently find Linux technically superior is because of its excellent filesystem support. The FUSE project is truly supurb, and Linux's VFS layer also allows it to support a wide variety of filesystems in-kernel. It is true that ZFS is native to Solaris, though, and I'm watching closely how Linux responds to it.
That's a good point. But, in general, if a feature is truly useful it'll be quickly (for proprietary) or very quickly (for OSS) implemented by the other apps in the same field. If it's not, you need to ask yourself whether this feature is truly necessary, or if you're going about the problem wrong, before concluding no apps that meet your needs exist.
For example, if the feature is something like, "automatically uploads data to an FTP server when IU close it down", perhaps what you really want is to export the data to a file and then upload to the web site with a shell script and command-line. This is a cooked example; please don't argue with me on it in particular. My point is that apps shouldn't all try to do everything because the result may be obscure bugs in all apps. If a feature is only implemented by a few apps, it may be because the other developers realize that this feature doesn't belong in the problem domain.
On the other hand, if the feature is something like, "can read the undocumented binary file format of proprietary product X", then your current system is rotten on the inside. Your data should always be in standard formats readable by many apps, and if it isn't, you need to change that as soon as possible rather than continuing to be locked in to a single vendor.
As far as Linux not technically being the best OS out there, I guess we'll just agree to disagree on that one. The hardware support is nice (and actually superior to Windows and OS X), that's true, but I don't see any advantage in application support, really
vi ~/.emacs # I'm probably going to Hell for this.
They don't "click on an icon" to start a game. They seem to get away with it fine.
And as for boot times, this is mostly a solved problem as long as you have a proper BIOS.
FOSS games? Come on... It's like saying Christian games, do you see a future for Christian games?
Isn't that the age group most likely to buy games? (A large part of the problem is that those high school and college kids who use Linux are often enthusiasts, who have more than one PC, including one running Windows for games if that interests them at all.)
I didn't see any mention of using nice to adjust the priority. It would make a big difference to set the nice level of X11 and the game to -20, explicitly telling your scheduler that your game is important, unless of course, you think it's important to have your email server responsive while playing Q3.
"just hacking shit until it kinda works ok"
Uh, that's called "linux". The entire kernel is like that, because Linus thinks that's the best way to do things. Remember him saying how much BSDs suck because they take their time and do things right instead of just good enough?
That is what I thought until I heared of Priority-Inversion. And indeed Priority-Inversion is the main problem I currently have with my backup processes.
Martin
[1] http://en.wikipedia.org/wiki/Priority_inversion
That's not enough. Read me other posting: http://linux.slashdot.org/comments.pl?sid=258139&c id=20097943 and be shure to follow the Wikipedia link as well. It was a real eye opener for me and made me rethink everything I knew about priorities.
So what you want is not Absolute Priorities but Priority Inheritance [1]. Otherwise TakingOutTrash might block the the very same CrossRoad object which PuttingOutFires desperately needs and in the meanwhile all the CPU goes to MakingDinner as MakingDinner has a higher priority then TakingOutTrash.
Martin
[1] http://en.wikipedia.org/wiki/Priority_inheritance
Nice was mentioned here: http://linux.slashdot.org/comments.pl?sid=258139&c id=20065199 and my answer on why nice won't help is here http://linux.slashdot.org/comments.pl?sid=258139&c id=20065199 and here http://linux.slashdot.org/comments.pl?sid=258139&c id=20097997.
Martin
Many high performance OSs (including OSX, QNX etc) are based on microkernels. Many of these have been happily doing work on CPUs as low as 286s since the 80s.
It is also interesting to see how the various OSs change. Linux has grown more micro-kernel-like features (user space drivers and user space file systems). Windows CE (a microkernel OS) has added monolythic kernel features such as in-kernel drivers and in-kernel file systems.
Basically we're seeing that there is no "one true path" and system integrators need different features for different systems.
Engineering is the art of compromise.
I agree completely. Linux needs to grow in market share before it can be taken seriously by anyone, including game publishers.
For that to happen, the problems that keep Linux from gaining marketshare must be addressed. I am speaking about issues such as the difficultly in loading binary device drivers. The stock Linux kernel does include a lot of drivers, but there must really be a mechanism for loading drivers into the Linux machine even in binary form. Aand also an architecture for checking for automatic driver updates and downloading them off a driver repository.
If managing the devices on Linux as simple or simpler than on Windows, we will see a lot more people migrating to Linux from Windows.
It is pointless to say that device manufacturers must release code for their drivers, because that does not take into account the fact that there aren't enough Linux users for the device manufacturers to want to follow our dictates. If Linux gains about 30% market share, then it will be possible to get device manufacturers to release code for their drivers, but as long as Linux remains in the fringes, Linux users don't really have the type of clout it requires to demand things from hardware manufacturers.