Its not about how *much* space, but about how often. Space gets allocated much more often then space gets freed, and usually at more time critical moments. Take, for example, a media system. If you're capturing a video (what else do you do on an XFS sytem?), the file will get enlarged several times during itslifetime. It will get deleted only once. Moreover, you care how quickly you can allocate space, since it effects you're capture quality, but don't really care if deleting files is slower (within reason, of course.) Or, take log files. Log files grow many times, are deleted only once. Also, as another poster pointed out, you usually delete log files when the system is lightly loaded doing internal maintainance. There is almost no application that I can think of (save artificial benchmarks) where XFS's deletion performance would be more important than its file creation/enlargement performance.
Yes, XFS does kick that much ass. Still, the deletion performance surprises me. Of course, the other speed things make up for it, but its still a puzzle. If you don't know, rm -rf has historically been a slow operation on XFS.
Here's my theory. Ext2 uses a bitmap to track free blocks, and I'm pretty sure ReiserFS does as well. Free block runs on XFS is managed by two B+trees, one keyed by address, one keyed by size. Thus, allocating space is very fast on XFS, and it is easy to keep things contiguous. However, inserting runs of blocks into both trees is a slower operation then simply clearing the appropriate bits. This would explain the difference between the file creation speed (extraction test) and file deletion speed (rm -rf test.) If this is the case, I think it is quite a good tradeoff, given that space is allocated much more often.
Of course, IANAXE (I am not an XFS engineer) so this is just my theory. I'd appreciate it is someone more informed about XFS could tell me the reason for the performance delta.
The x86 processor can address 4GB of memory. OSs usually partition memory in order to map OS space into each processes. I don't know if Linux does this, but in other OSs (all versions of Windows, BeOS) this allows system calls to be made more quickly, since the page directory doesn't have to be changed and the TLB entries (the page table cache) doesn't get invalidated. The 2GB number is entirely arbitrary, (Linux reserves 1GB, Windows can be made to reserve 1GB) but a large number is needed to ensure that the kernel doesn't run out of address space. Partitioning memory also faccilitates access to user data during a system call, since all pointers passed to the system call are still valid (since the page directory didn't change.)
Actually only old grognards use that definition of microkernel anymore. The "new" microkernel OSs are anything that run major services in userspace. They're not "pure" microkernels in the olden days sense, but who gives a f**k? If you're filesystem code crashes you're hosed, kernel space or no. Also, I'd like to point out that QNX (which is a microkernel) runs networking in kernel space. (At least QNX4 did)
Re:AtheOS is what I've been griping for...
on
AtheOS Interview
·
· Score: 2
Does everything on/. have to be about webserving, or "persistant objects" or security or something equally uninteresting? I mean doesn't ANYBODY use desktop computers here? AtheOS has a lot going for it, especially for such a young project. It has a fully preemptible kernel (Linux doesn't) that is tuned for desktop usage (Linux is not, otherwise the default quantum wouldn't be 50ms) and has awesome support for SMP (which Linux doesn't) because of the extensive use of kernel and server threads (which Linux doesn't use nearly enough).
Dickhead. Linux does everything in kernelspace (networking!), except the GUI. AtheOS is much closer to a microkernel system (though it isn't one) in that servers do a lot of the processing. For example, the application server handles the GUI (ie "interface chrome") and other, well, application services.
Is it just me, or does/. have a larger percentage of people who don't understand the concept of sarcasm? BeOS users complained that Steve Jobs (head of Apple) wouldn't give Be (makers of BeOS) the technical specifications (design documents) needed to get BeOS working (the state in which an OS does bootup and not crash) on G3 macs (little blue and white machines that have crappy media subsystems.) He was relateing that to Sun and Linux. Get it? Alright let me try aga... never mind...
Hell, I had to f**k with modlines just a month or two ago (with XFree86 4.0.1) to get my 19" Radius monitor to get it to do 85Hz @ 1152x864. (It does 90Hz in BeOS at that res). Couldn't figure it out (use math, to configure a computer?) So I just wrote a program to get the settings from my BeOS install (which, like every other GUI in existance *except* X, can actually read Plug & Play monitor specs).
I really don't know how much of an issue this is. Normally, I don't ever bother using the reboot command in BeOS, I simply hit the reboot key on my computer. I've been doing this for more than a year now, and I have yet to lose any data.
Just to elaborate on his point. Mach really *is* giving microkernels a bad name. Two of the fastest UNIX-compatible systems (BeOS and QNX) are microkernel based. Yet, since everyone sees Mach as representing microkernels in general, people automatically get the idea that microkernels are slow. Just to give you an idea of the situation, its like everyone saying Linux is slow, because Win95 sucks and both use a monolithic kernel.
BTW> I was thinking. From looking at the Win95 design, it seems to me that Win95 may just be the most "advanced" of any commerical OS design. Since most Windows95 components are user-level libraries mapped into each program's address space, it would seem that Win95 is the original exokernel!
I'll give you 50 cents, go buy yourself a clue. Darwin is aimed at being a rock-solid core for the new MacOS-X system, and being similar to the core of NeXTStep. xMach is aimed at being small, thin, fast, and clean. While Darwin is based on old FreeBSD 3.2 code, xMach aims to be as modern as possible (and according to the story, the site is down) will try to take advantage of some of the latent features of the Mach kernel, such as fine grained locking for multiprocessing, that have been neglected in recent BSD releases. (Read the UVM design thesis for a description of this, FYI)
Bill knows the importance of providing a consistent user interface. That is why he is happy to leave themeing outside of windows. It makes life nice and simple for corporate accounts where M$ makes it's big money. What are you to do if you want a desktop with a salvador dali on steroids motif?? No problem. Bill gave MS API access to Stardock so they could build a themeing product. That way everyone is happy and M$ probably gets a kickback for every copy of windowblinds sold.
>>>>>>>>>>>
That's funny. Get a clue. Theming doesn't make a GUI harder to use! Mac users have been theming their desktops for ages. Its the fact that there are dozens of toolkits, each with different UIs, and no real UI guidelines that makes *NIX GUIs annoying to use.
Also all packages are compiled for i586 by default, excellent to silence those clueless drones that think blah-i386.blah is automatically bad.
>>>>>>>>>>>>>
Not only clueless drones, but power users. (A term you never see associated with Linux btw, because it seems all the advanced users are admins...) i386-optimized packages might be fine for your little Apache and MySQL server code, but for floating-point intense scientific or graphics applications, i686 optimizations give a decent performance boost over i386. Also, it seems to me that Linux packages have no comprehension of statistics. If 90% of desktop Linux users use P6+ class processors (a good guess, since you haven't been able to buy less than that for more than a year and a half) then shouldn't the distribution of packages reflect the distribution of machines? 80-90% PPro, 10% i585, and 1% i386?
Also all packages are compiled for i586 by default, excellent to silence those clueless drones that think blah-i386.blah is automatically bad.
>>>>>>>>>>>>>
Not only clueless drones, but power users. (A term you never see associated with Linux btw, because it seems all the advanced users are admins...) i386-optimized packages might be fine for your little Apache and MySQL server code, but for floating-point intense scientific or graphics applications, i686 optimizations give a decent performance boost over i386. Also, it seems to me that Linux packages have no comprehension of statistics. If 90% of desktop Linux users use P6+ class processors (a good guess, since you haven't been able to buy less than that for more than a year and a half) then shouldn't the distribution of packages reflect the distribution of machines? 80-90% PPro, 10% i585, and 1% i386?
Also all packages are compiled for i586 by default, excellent to silence those clueless drones that think blah-i386.blah is automatically bad.
>>>>>>>>>>>>>
Not only clueless drones, but power users. (A term you never see associated with Linux btw, because it seems all the advanced users are admins...) i386-optimized packages might be fine for your little Apache and MySQL server code, but for floating-point intense scientific or graphics applications, i686 optimizations give a decent performance boost over i386. Also, it seems to me that Linux packages have no comprehension of statistics. If 90% of desktop Linux users use P6+ class processors (a good guess, since you haven't been able to buy less than that for more than a year and a half) then shouldn't the distribution of packages reflect the distribution of machines? 80-90% PPro, 10% i585, and 1% i386?
Islam isn't a religion of violence. Neither is Christianity, Buddhism, or whatever. However, it is a fact that almost all pervasive religions have been spread through some means of force. The muslims converted parts of Africa and Asia, and the Christians forcibly converted North and South America. There have been tolerant Christain countries (The US for one) and intolerant Christian countries. There have been tolerant muslim countries (early muslic arabic societies and pre WWI Turkey) as well as the muslim parts of the eastern Indian subcontinent, and intolerant muslic societies. This fact is applicable to all religions. Its a sorry truth, but a truth nonetheless.
Yahoo. That was soooo funny. Not. It would be, if Windows was actually version 2000.0, but its not, its the version released in the year 2000. I, for one, think this is not at all a bad idea for something like Windows, where major versions are released every few years, and patch-levels are released in service packs. Win2K SP2 is a lot more asthetically pleasing (and informative, since it details the patches installed) than RedHat 7.1 or kernel 2.4.2. There really is no use for the complexity of the three number format (two number are enough to handle most anything pretty well) and stuff like System V R4 or X11 release 5 are just so much more asthetically pleasing. Besides, a version number on a distro is almost 100% useless, since a lot of (I know for sure that at least 90% of you guys have extensively modifed your distros beyond recognition) software on Linux distributions are applied in between version numbers. Thus, the whole arguement over version numbers is more or less moot.
Not to belittle the SDL developers, but SDL is really nothing more than a wrapper layer around existing APIs. For example, SDL/Win32 wraps around DirectX, and SDL on BeOS wraps around the standard BeWindow class. Thus, until Linux gets an API as good as DirectX (and no, OpenGL is only part of the equation, and even that isn't as good as D3D anymore) SDL/Linux won't be better/faster/more featureful than DirectX.
I think you should clarify the function numbering thing. The interface methods are (and always have been) unnumbered. Its the interfaces themselves that are numbered (IDirectDraw7 for example), which makes sense since interfaces are immutable.
define the functionality of your class in an abstract base class and implement it in your class :
>>>>>>
That *is* COM. All the stuff around it is interapplication communication stuff (which is best done with messages anyway, since IA stuff is inherently asynchronus), and object framekwork stuff.
A) Both KDE and GNOME suck. I'm sorry, but of the two OSs that support the rear channel on my SBLive (good god the new Klipsch 4.1's rock!) I find myself using Win9x because KDE2 and GNOME 1.2 are just too fucking slow! I takes at least two seconds to start up Konqueror, and sometimes you accidentally hit help a couple of times (which causes four Konq windows to pop up) because you forgot how long everything takes to load. This is especially a problem with KDE2, even simple apps like KPM take longer to load than Word does on Windows. Not to menetion anything on BeOS. I really like KDE2, don't get me wrong. KOffice is a killer app, and the whole component thing is very well implemented (it looks good too!) But the speed (not just startup, but the flickering and rubberbanding that happens everytime you reize a window, the shear that happens when you move windows quickly, the jumpy cursor, etc) is just a deal breaker. GNOME is a little better, but its no NT4 (or even 98 for that matter.)
B) Sure you can use apps from different environments at the same time, but doesn't running different environemnts kind of defeat the purpose of having an integrated desktop environment? I like integration, I like consistancy, and I like freedom (as in freedom to choose my own toolkits and apps regardless of what developers want to use. I'm talking about the standard toolkit ABI, read up on my older posts about it). Neither KDE nor GNOME give me any of these. The sad thing is, with Be's financial troubles, I might have to go back to Windows...
God forbid they actually use something better suited to the job! I don't know if FreeBSD 5.0 is that product, but it is stupid to use an inferior product (not that Linux is that product!) just because you have groundless attraction to it.
If Canada gets DSL at 2mbps for $40 a month, I'd say US DSL *is* slower. The fastest DSL speeds in the US are 1.5mbps for $39, which is available in the MidWest. In my area (Northern VA) the fastest available DSL speeds are 640k for $50. There is 1.5mbps service from Earthlink for $40, but that is burstable and rarely reaches that. The 640k DSL is also from a crappy provider, so for all intents and purposes, the most reasonable DSL solution is 416K or 768K SDSL (love that dedicated bandwidth!) for $50-$70 a month.
Its not about how *much* space, but about how often. Space gets allocated much more often then space gets freed, and usually at more time critical moments. Take, for example, a media system. If you're capturing a video (what else do you do on an XFS sytem?), the file will get enlarged several times during itslifetime. It will get deleted only once. Moreover, you care how quickly you can allocate space, since it effects you're capture quality, but don't really care if deleting files is slower (within reason, of course.) Or, take log files. Log files grow many times, are deleted only once. Also, as another poster pointed out, you usually delete log files when the system is lightly loaded doing internal maintainance. There is almost no application that I can think of (save artificial benchmarks) where XFS's deletion performance would be more important than its file creation/enlargement performance.
Yes, XFS does kick that much ass. Still, the deletion performance surprises me. Of course, the other speed things make up for it, but its still a puzzle. If you don't know, rm -rf has historically been a slow operation on XFS.
Here's my theory. Ext2 uses a bitmap to track free blocks, and I'm pretty sure ReiserFS does as well. Free block runs on XFS is managed by two B+trees, one keyed by address, one keyed by size. Thus, allocating space is very fast on XFS, and it is easy to keep things contiguous. However, inserting runs of blocks into both trees is a slower operation then simply clearing the appropriate bits. This would explain the difference between the file creation speed (extraction test) and file deletion speed (rm -rf test.) If this is the case, I think it is quite a good tradeoff, given that space is allocated much more often.
Of course, IANAXE (I am not an XFS engineer) so this is just my theory. I'd appreciate it is someone more informed about XFS could tell me the reason for the performance delta.
The x86 processor can address 4GB of memory. OSs usually partition memory in order to map OS space into each processes. I don't know if Linux does this, but in other OSs (all versions of Windows, BeOS) this allows system calls to be made more quickly, since the page directory doesn't have to be changed and the TLB entries (the page table cache) doesn't get invalidated. The 2GB number is entirely arbitrary, (Linux reserves 1GB, Windows can be made to reserve 1GB) but a large number is needed to ensure that the kernel doesn't run out of address space. Partitioning memory also faccilitates access to user data during a system call, since all pointers passed to the system call are still valid (since the page directory didn't change.)
Actually only old grognards use that definition of microkernel anymore. The "new" microkernel OSs are anything that run major services in userspace. They're not "pure" microkernels in the olden days sense, but who gives a f**k? If you're filesystem code crashes you're hosed, kernel space or no. Also, I'd like to point out that QNX (which is a microkernel) runs networking in kernel space. (At least QNX4 did)
Does everything on /. have to be about webserving, or "persistant objects" or security or something equally uninteresting? I mean doesn't ANYBODY use desktop computers here? AtheOS has a lot going for it, especially for such a young project. It has a fully preemptible kernel (Linux doesn't) that is tuned for desktop usage (Linux is not, otherwise the default quantum wouldn't be 50ms) and has awesome support for SMP (which Linux doesn't) because of the extensive use of kernel and server threads (which Linux doesn't use nearly enough).
Dickhead. Linux does everything in kernelspace (networking!), except the GUI. AtheOS is much closer to a microkernel system (though it isn't one) in that servers do a lot of the processing. For example, the application server handles the GUI (ie "interface chrome") and other, well, application services.
Is it just me, or does /. have a larger percentage of people who don't understand the concept of sarcasm? BeOS users complained that Steve Jobs (head of Apple) wouldn't give Be (makers of BeOS) the technical specifications (design documents) needed to get BeOS working (the state in which an OS does bootup and not crash) on G3 macs (little blue and white machines that have crappy media subsystems.) He was relateing that to Sun and Linux. Get it? Alright let me try aga... never mind...
Hell, I had to f**k with modlines just a month or two ago (with XFree86 4.0.1) to get my 19" Radius monitor to get it to do 85Hz @ 1152x864. (It does 90Hz in BeOS at that res). Couldn't figure it out (use math, to configure a computer?) So I just wrote a program to get the settings from my BeOS install (which, like every other GUI in existance *except* X, can actually read Plug & Play monitor specs).
Don't forget attributes.
IIRC, SGI had to hack the VM a little bit to allow it to notify the filesystem when a page was actually flushed to disk.
I really don't know how much of an issue this is. Normally, I don't ever bother using the reboot command in BeOS, I simply hit the reboot key on my computer. I've been doing this for more than a year now, and I have yet to lose any data.
Just to elaborate on his point. Mach really *is* giving microkernels a bad name. Two of the fastest UNIX-compatible systems (BeOS and QNX) are microkernel based. Yet, since everyone sees Mach as representing microkernels in general, people automatically get the idea that microkernels are slow. Just to give you an idea of the situation, its like everyone saying Linux is slow, because Win95 sucks and both use a monolithic kernel.
BTW> I was thinking. From looking at the Win95 design, it seems to me that Win95 may just be the most "advanced" of any commerical OS design. Since most Windows95 components are user-level libraries mapped into each program's address space, it would seem that Win95 is the original exokernel!
I'll give you 50 cents, go buy yourself a clue. Darwin is aimed at being a rock-solid core for the new MacOS-X system, and being similar to the core of NeXTStep. xMach is aimed at being small, thin, fast, and clean. While Darwin is based on old FreeBSD 3.2 code, xMach aims to be as modern as possible (and according to the story, the site is down) will try to take advantage of some of the latent features of the Mach kernel, such as fine grained locking for multiprocessing, that have been neglected in recent BSD releases. (Read the UVM design thesis for a description of this, FYI)
Bill knows the importance of providing a consistent user interface. That is why he is happy to leave themeing outside of windows. It makes life nice and simple for corporate accounts where M$ makes it's big money. What are you to do if you want a desktop with a salvador dali on steroids motif?? No problem. Bill gave MS API access to Stardock so they could build a themeing product. That way everyone is happy and M$ probably gets a kickback for every copy of windowblinds sold.
>>>>>>>>>>>
That's funny. Get a clue. Theming doesn't make a GUI harder to use! Mac users have been theming their desktops for ages. Its the fact that there are dozens of toolkits, each with different UIs, and no real UI guidelines that makes *NIX GUIs annoying to use.
Also all packages are compiled for i586 by default, excellent to silence those clueless drones that think blah-i386.blah is automatically bad. >>>>>>>>>>>>> Not only clueless drones, but power users. (A term you never see associated with Linux btw, because it seems all the advanced users are admins...) i386-optimized packages might be fine for your little Apache and MySQL server code, but for floating-point intense scientific or graphics applications, i686 optimizations give a decent performance boost over i386. Also, it seems to me that Linux packages have no comprehension of statistics. If 90% of desktop Linux users use P6+ class processors (a good guess, since you haven't been able to buy less than that for more than a year and a half) then shouldn't the distribution of packages reflect the distribution of machines? 80-90% PPro, 10% i585, and 1% i386?
Also all packages are compiled for i586 by default, excellent to silence those clueless drones that think blah-i386.blah is automatically bad. >>>>>>>>>>>>> Not only clueless drones, but power users. (A term you never see associated with Linux btw, because it seems all the advanced users are admins...) i386-optimized packages might be fine for your little Apache and MySQL server code, but for floating-point intense scientific or graphics applications, i686 optimizations give a decent performance boost over i386. Also, it seems to me that Linux packages have no comprehension of statistics. If 90% of desktop Linux users use P6+ class processors (a good guess, since you haven't been able to buy less than that for more than a year and a half) then shouldn't the distribution of packages reflect the distribution of machines? 80-90% PPro, 10% i585, and 1% i386?
Also all packages are compiled for i586 by default, excellent to silence those clueless drones that think blah-i386.blah is automatically bad. >>>>>>>>>>>>> Not only clueless drones, but power users. (A term you never see associated with Linux btw, because it seems all the advanced users are admins...) i386-optimized packages might be fine for your little Apache and MySQL server code, but for floating-point intense scientific or graphics applications, i686 optimizations give a decent performance boost over i386. Also, it seems to me that Linux packages have no comprehension of statistics. If 90% of desktop Linux users use P6+ class processors (a good guess, since you haven't been able to buy less than that for more than a year and a half) then shouldn't the distribution of packages reflect the distribution of machines? 80-90% PPro, 10% i585, and 1% i386?
Islam isn't a religion of violence. Neither is Christianity, Buddhism, or whatever. However, it is a fact that almost all pervasive religions have been spread through some means of force. The muslims converted parts of Africa and Asia, and the Christians forcibly converted North and South America. There have been tolerant Christain countries (The US for one) and intolerant Christian countries. There have been tolerant muslim countries (early muslic arabic societies and pre WWI Turkey) as well as the muslim parts of the eastern Indian subcontinent, and intolerant muslic societies. This fact is applicable to all religions. Its a sorry truth, but a truth nonetheless.
Yahoo. That was soooo funny. Not. It would be, if Windows was actually version 2000.0, but its not, its the version released in the year 2000. I, for one, think this is not at all a bad idea for something like Windows, where major versions are released every few years, and patch-levels are released in service packs. Win2K SP2 is a lot more asthetically pleasing (and informative, since it details the patches installed) than RedHat 7.1 or kernel 2.4.2. There really is no use for the complexity of the three number format (two number are enough to handle most anything pretty well) and stuff like System V R4 or X11 release 5 are just so much more asthetically pleasing. Besides, a version number on a distro is almost 100% useless, since a lot of (I know for sure that at least 90% of you guys have extensively modifed your distros beyond recognition) software on Linux distributions are applied in between version numbers. Thus, the whole arguement over version numbers is more or less moot.
Not to belittle the SDL developers, but SDL is really nothing more than a wrapper layer around existing APIs. For example, SDL/Win32 wraps around DirectX, and SDL on BeOS wraps around the standard BeWindow class. Thus, until Linux gets an API as good as DirectX (and no, OpenGL is only part of the equation, and even that isn't as good as D3D anymore) SDL/Linux won't be better/faster/more featureful than DirectX.
I think you should clarify the function numbering thing. The interface methods are (and always have been) unnumbered. Its the interfaces themselves that are numbered (IDirectDraw7 for example), which makes sense since interfaces are immutable.
define the functionality of your class in an abstract base class and implement it in your class : >>>>>> That *is* COM. All the stuff around it is interapplication communication stuff (which is best done with messages anyway, since IA stuff is inherently asynchronus), and object framekwork stuff.
A) Both KDE and GNOME suck. I'm sorry, but of the two OSs that support the rear channel on my SBLive (good god the new Klipsch 4.1's rock!) I find myself using Win9x because KDE2 and GNOME 1.2 are just too fucking slow! I takes at least two seconds to start up Konqueror, and sometimes you accidentally hit help a couple of times (which causes four Konq windows to pop up) because you forgot how long everything takes to load. This is especially a problem with KDE2, even simple apps like KPM take longer to load than Word does on Windows. Not to menetion anything on BeOS. I really like KDE2, don't get me wrong. KOffice is a killer app, and the whole component thing is very well implemented (it looks good too!) But the speed (not just startup, but the flickering and rubberbanding that happens everytime you reize a window, the shear that happens when you move windows quickly, the jumpy cursor, etc) is just a deal breaker. GNOME is a little better, but its no NT4 (or even 98 for that matter.)
B) Sure you can use apps from different environments at the same time, but doesn't running different environemnts kind of defeat the purpose of having an integrated desktop environment? I like integration, I like consistancy, and I like freedom (as in freedom to choose my own toolkits and apps regardless of what developers want to use. I'm talking about the standard toolkit ABI, read up on my older posts about it). Neither KDE nor GNOME give me any of these. The sad thing is, with Be's financial troubles, I might have to go back to Windows...
God forbid they actually use something better suited to the job! I don't know if FreeBSD 5.0 is that product, but it is stupid to use an inferior product (not that Linux is that product!) just because you have groundless attraction to it.
If Canada gets DSL at 2mbps for $40 a month, I'd say US DSL *is* slower. The fastest DSL speeds in the US are 1.5mbps for $39, which is available in the MidWest. In my area (Northern VA) the fastest available DSL speeds are 640k for $50. There is 1.5mbps service from Earthlink for $40, but that is burstable and rarely reaches that. The 640k DSL is also from a crappy provider, so for all intents and purposes, the most reasonable DSL solution is 416K or 768K SDSL (love that dedicated bandwidth!) for $50-$70 a month.