Page 1 of 3 123 LastLast
Results 1 to 10 of 22

Thread: EXT4 & Btrfs Regressions In Linux 2.6.36

Hybrid View

  1. #1
    Join Date
    Jan 2007
    Posts
    14,532

    Default EXT4 & Btrfs Regressions In Linux 2.6.36

    Phoronix: EXT4 & Btrfs Regressions In Linux 2.6.36

    Recently when benchmarking the Btrfs and EXT4 file-systems we were left surprised that the performance of the next-generation Btrfs file-system had regressed against EXT4 to the point where the evolutionary file-system is measurably faster in a greater number of disk benchmarks. In fact, even with solid-state drives and Btrfs offering an SSD optimized mode, it still conceded to EXT4. It turns out that in the Linux 2.6.35 kernel, Btrfs regressed. This regression should have been fixed with the Linux 2.6.36 kernel, but recently when benchmarking EXT4/Btrfs against ZFS-FUSE on a 2.6.36 development snapshot we found its performance to still be poor for Btrfs compared to EXT4. To confirm where these two most prominent Linux file-systems are at right now, we have new EXT4 and Btrfs performance results from the Linux 2.6.34, 2.6.35, and 2.6.36-rc3 kernels.

    http://www.phoronix.com/vr.php?view=15263

  2. #2
    Join Date
    Mar 2009
    Posts
    141

    Default

    Without some sandbox for all the developers of all the various systems to play together in without having to worry about breaking things, how is anybody to know how things will work when everybody gets together all at once to merge in their possibly massive and incompatible changes within the tiny allowed timeframe (only to be disallowed from making the possibly sweeping changes necessary in order to fix things properly)? This sounds like a terrible development model. And why is it called a release candidate? There is absolutely zero chance that -rc1 is bug free and will be released as-is, and thus, not a candidate for release. It's that simple.

    I need to finish school and learn C so I can help fix this shit. Totally ridiculous. The world needs more CK's. It also sounds like we need a way to make big changes which break things and then have the ability to eventually get those changes mainline only after everything gets integrated properly. Evolutionary change sometimes sucks and causes big ugly codebase.

  3. #3

    Default

    Quote Originally Posted by Smorg View Post
    [...]
    I don't know where you have see that release candidate equal bug-free release. Such aren't normalized in any way so I guess Linus can name his prerelease as he wants. Also it's no because you think that the rc1 is the first release of code that no testing was done before.

    Your whole post prove that you have nearly no understanding , if absolutely none, on how the kernel is structured and organized. You will have to learn a little bit more than C before you can "fix this shit".

  4. #4
    Join Date
    Mar 2009
    Posts
    141

    Default

    Quote Originally Posted by Xheyther View Post
    I don't know where you have see that release candidate equal bug-free release.
    The name sounds pretty self-exploratory to me. What else could "release candidate" possibly mean? I'm aware it isn't formally defined in any standard unlike alpha/beta.

    Also it's no because you think that the rc1 is the first release of code that no testing was done before.
    It's the first release where everything has actually been assembled and feature-frozen for wider testing, which I would imagine would make refactoring beyond simple bug fixing in order to fix non-trivial performance regressions hard. My point is that regressions discovered during this phase are inevitable. With all the SDLC possibilities that you could come up with to leverage git I would think you could think of something that avoids regressions after it's too late to fix.

    I know they probably do something better than "Hey Linus plx merge my hax kkthx. Hope it doesn't break anything on your end! Guess we'll find out when Phoronix discovers it."

    Your whole post prove that you have nearly no understanding , if absolutely none, on how the kernel is structured and organized.
    Completely irrelevant to the testing/release methodology is it not?

    You will have to learn a little bit more than C before you can "fix this shit".
    Obviously.

    How old are you? High school still?
    Ya. All the languages I play with (currently Java in computer science) require basically no knowledge of how to implement anything in an operating system...

    You might want to familiarize yourself with linux-next, and linux-staging. Linux-next is like a pre-RC, i.e. BETA. Linux-staging is like a pre-pre-RC, i.e. ALPHA. You have your completely insane changes that will break all kinds of things in their current form.... they go into linux-staging, which you can pretty well assume will be so completely broken that it might eat your dog. At some point, if it cleans up reasonably well and starts to shape up into something useful, it ends up in next, which is basically what the NEXT kernel version will become.... i.e., the current RC is 2.6.36, so next has stuff that you can expect to see going into 2.6.37... i.e. 2.6.37 BETA. These are big changes, but not so big that they pose any particularly major risk -- they've already passed staging (if applicable) and most likely they will build and run.

    Now you want to make some MAJOR architectural changes that will wreak all kinds of havoc.... that goes into staging. If other stuff breaks in a major way, it may be your responsibility to fix it.

    Of course, not everything can just get dumped into staging... it still has to pass some basic tests and convince those in charge that it is worthy.... in other words, it can't just be raw insanity.

    So... if you're just interested in fixing bugs, then it will probably just go straight in as a bug fix to be incorporated in the next point release. A little more significant of a change and it goes in next. Major, but well conceived architectural change and it goes in staging. Complete insanity and it goes nowhere.
    The distributed development seems like it might complicate regression testing where performance is affected by complex interactions between large-scale components. I suppose that all depends on the exact implementation and how modularized things can be. If you had inefficient code-paths which only arise when various branches are merged into an rc then bug fixy workarounds could be hard assuming everybody's code performed well when tested independently.

    If there is a cascading waterfall like thing then whats up with the "merge requests"? Wouldn't Linus just make a copy of the next-most-tested version with no assembly multiple of branches directly into what eventually becomes a rc.

  5. #5
    Join Date
    Jan 2010
    Posts
    159

    Default

    Quote Originally Posted by Smorg View Post
    Ya. All the languages I play with (currently Java in computer science) require basically no knowledge of how to implement anything in an operating system...
    If you know java then just try some c by example code ... first time I programmed C it was like: "I have no idea .. let's do it like java and see what happens" and it worked ... until I hit the necessity for malloc which took some time to figure, because I was accustomed to the Java automagic way.

  6. #6
    Join Date
    Jan 2010
    Posts
    159

    Default

    Quote Originally Posted by Smorg View Post
    If there is a cascading waterfall like thing then whats up with the "merge requests"? Wouldn't Linus just make a copy of the next-most-tested version with no assembly multiple of branches directly into what eventually becomes a rc.
    Sometimes Linus or the Developer might not want to merge a specific patch even if it's already living in testing or there are alternatives wich could also considered. (Just my guess)

  7. #7
    Join Date
    Sep 2010
    Posts
    1

    Default

    Quote Originally Posted by Smorg View Post
    Without some sandbox for all the developers of all the various systems to play together in without having to worry about breaking things, how is anybody to know how things will work when everybody gets together all at once to merge in their possibly massive and incompatible changes within the tiny allowed timeframe (only to be disallowed from making the possibly sweeping changes necessary in order to fix things properly)? This sounds like a terrible development model. And why is it called a release candidate? There is absolutely zero chance that -rc1 is bug free and will be released as-is, and thus, not a candidate for release. It's that simple.

    I need to finish school and learn C so I can help fix this shit. Totally ridiculous. The world needs more CK's. It also sounds like we need a way to make big changes which break things and then have the ability to eventually get those changes mainline only after everything gets integrated properly. Evolutionary change sometimes sucks and causes big ugly codebase.
    Just in-case any other lurker is reading this thread I'd like to point out that the quoted message is pure FUD and may be a troll-post.

  8. #8
    Join Date
    Aug 2008
    Location
    Finland
    Posts
    1,578

    Default

    Quote Originally Posted by Smorg View Post
    I need to finish school and learn C so I can help fix this shit. Totally ridiculous. The world needs more CK's. It also sounds like we need a way to make big changes which break things and then have the ability to eventually get those changes mainline only after everything gets integrated properly. Evolutionary change sometimes sucks and causes big ugly codebase.
    That's actually being done already. There's a world of its own happening behind Linus' git tree which these release candidates and releases are tagged from. But feel free to participate, I doubt anyone complains about extra testing for code before it ends up in Linus' tree.

  9. #9
    Join Date
    Oct 2007
    Posts
    27

    Default

    oi....I realize that this is just a "this is what we noticed with our benchmark suite post" so there isn't a lot of depth on what vfs, block, or scheduling changes might have had an effect, but it really brings out the Smorgs of the word who have a vastly simplified view of how things work.

    I realize you don't want to do 2 weeks of analysis and then post a full write up as you'd rather post something now, but it'd be nice to at least include a little bit of something. Maybe a few select commits or merges that had an effect on the benchmark? I know some of the VFS scalability stuff went into 2.6.36, which in the short term might hurt performance on single threaded workloads.

  10. #10
    Join Date
    Jul 2009
    Posts
    416

    Default

    Quote Originally Posted by Smorg View Post
    Without some sandbox for all the developers of all the various systems to play together in without having to worry about breaking things, how is anybody to know how things will work when everybody gets together all at once to merge in their possibly massive and incompatible changes within the tiny allowed timeframe (only to be disallowed from making the possibly sweeping changes necessary in order to fix things properly)? This sounds like a terrible development model. And why is it called a release candidate? There is absolutely zero chance that -rc1 is bug free and will be released as-is, and thus, not a candidate for release. It's that simple.

    I need to finish school and learn C so I can help fix this shit. Totally ridiculous. The world needs more CK's. It also sounds like we need a way to make big changes which break things and then have the ability to eventually get those changes mainline only after everything gets integrated properly. Evolutionary change sometimes sucks and causes big ugly codebase.
    Stuff that gets merged is a bit more tested than "Hey Linus, I rewrote the TCP stack over the weekend after having a few too many beers on Friday. Mind if this gets merged for the next release?"

    Anything getting merged into Linus's branch should have been pretty thoroughly tested before hand.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •