`
tianshibaijia
  • 浏览: 1125116 次
文章分类
社区版块
存档分类
最新评论

Howto Fix ureadahead problem after upgrading to Ubuntu 10.04

 
阅读更多

After upgrading to Ubuntu 10.04,some get “init: ureadahead main process (329) terminated with status 4″ error at startup.This can be fixed by directly remove the file:/etc/init/ureadahead.conf.

open terminal from Applications->Accessories menu and type this to do it:

sudo mv /etc/init/ureadahead.conf /etc/init/ureadahead.conf.disable

Something about ureadahead written by Ubuntu developer:

All about ureadahead
Hey folks, we developers don’t get the spare time to hang out on the forums for most of the release cycle, but in the past day I’ve tried to keep up with various boot-related issues and I’ve seen a few posts about ureadahead – and people recommending removing it.

I thought it might be a good idea to try and explain what it does, how it does it, and why “status 4″ is a good thing.

Also I want to stress that I’m not going to tell you that there’s nothing wrong with it, and that you haven’t had a genuine issue, but just that I haven’t heard about it if you have! I’d really appreciate it if anybody who is having problems could help out with some debugging to understand the problem, then I’ll be able to fix it for you and everyone else!

What does ureadahead do?

In order to boot Ubuntu, we need to read somewhere between 100MB and 200MB of data from the disk and into memory. Unfortunately the slowest part of your otherwise awesome machine is its hard disk — that’s why we want this data into memory in the first place.

Hard disks aren’t just slow to read data, they’re slow to find it as well! So we can lose a time of time during boot just waiting for the hard disk to find the data we need, and then read it into memory.

What ureadahead does is figure out what pieces of which files we actually need, and read everything from the disk into memory in one go. By doing it at once we don’t need to spend so much time finding everything, and because it’s already in memory, we don’t waste anywhere near as much time during boot.

It’s just for SSD right, not rotational HDD?

No, quite the opposite. You’re thinking of sreadahead (“Super-readahead”). This was a similar tool written by Intel for their Moblin project, and is very unashamedly optimised for SSDs.

We tried it for a while, but found that its performance was simply terrible on rotational hard drives.

I sat down, drank a large amount of Tea, and wrote ureadahead (“Über-readahead”) to replace it. ureadahead from the get go was unashamedly optimised for rotational hard drives, that’s not to say it’s poor on SSD either, it performas at least as well as sreadhead there.

But ureadahead takes several seconds of my boot!

Yes it does; it’s reading all the data in one go. If you didn’t have it, those several seconds would be simply spread out across everything else, and probably last two or three times longer!

I looked at bootchart, and ureadahead doesn’t get full throughput

Even though ureadahead reads everything in one go, and is heavily optimised to read everything in the actual order it’s on the disk, it still has to skip over the bits it doesn’t need.

This “seek time” is the same performance penalty as finding data in the first place.

The only way to avoid this is defragmenting your disk.

But Linux filesystems don’t need defragmenting!

Whoever told you that is deeply mistaken, this is one of the most common myths of Linux.

What is true is that Linux filesystems avoid, where possible, fragmenting their inode tables. This means that the index of how files are split up (fragmented) across the disk, and where those parts are, tends to be kept together as a whole.

That’s a good thing; fragmentation of inode tables is a big problem for other filesystems (FATs in that filesystem, etc.) so by keeping them together, it wins a lot of performance.

But the data itself is still fragmented, and spread all over your disk in a random order. And unfortunately during boot, it’s the data we need.

One of the future things we want to do is use the ureadahead analysis of what we need during boot to feed into a defragmenter, so everything we need is in one big block on the disk.

When does ureadahead reprofile?

Any time a package is installed or upgraded that contains a file in /etc/init or /etc/init.d; this is a bit brute-force, and means we’re probably reprofiling a bit more than we’d like.

To force a reprofile, simply remove the “pack” files in /var/lib/ureadahead and reboot.

In a future version we intend to move to each boot improving the pack file by identifying things read that were never used, and new things that weren’t read last time.

When does ureadahead stop profiling?

ureadahead slightly assumes you’re using auto-login; so waits about 45s after the display manager starts before it stops reprofiling. If you’re logging in with a password, and want your desktop files included in the pack, type quickly

(This will be addressed in a future version too).

ureadahead slows down my boot!

I want to hear from you! It really shouldn’t; to give you an example of the savings, my trusty laptop boots in about 1m30s without ureadahead – and only 30s with it.

Make sure you have the bootchart package installed. Remove the ureadahead pack files, and move the /etc/init/ureadahead.conf file to something like ureadahead.disabled. Reboot, login, etc. and wait for the bootchart to appear (“watch status bootchart” until stop/waiting).

Now put the ureadahead conf file back, reboot and login again and wait for bootchart to appear.

Finally reboot and login once more, and wait for bootchart to appear.

You’ll now have three bootcharts. One is without ureadahead, one is when ureadahead is profiling, and the final one is with ureadahead behaving normally.

File a bug report on ureadahead (Ubuntu-bug ureadahead) and attach these three files along with the output of “sudo ureadahead –dump” (this is quite a bit, so capture it in a file).

I’ll take a look, and we’ll see if we can fix that bug for you!

ureadahead exits with status 4!

This isn’t actually a bug

Status 4 (usually ureadahead-other exits with this) means that you had a mountpoint in your fstab that didn’t have any files on it needed during boot. Probably that drive with all those MP3s and movie files on it.

It still reads everything needed during boot, the status is just there for me to debug other issues.

The real bug here is that Upstart spams the console with that message,even though the ureadahead-other.conf file has “normal exit 4″ in it!

(In other words, If your boot fails, this message is completely unrelated to that! It’s more likely that there is an issue with the X server starting, or an issue with init scripts not being run — a good clue might be whether you see a login: screen after pressing Alt+F2)
Last edited by keybuk; March 22nd, 2010 at 08:23 AM..

Related posts:

  1. Howto enable thinkpad hotkeys in Ubuntu 10
  2. Howto Change Plymouth themes (initial splash screen) in Ubuntu 10.04
  3. Fix Network connection icon disappear on top-right panel
  4. Howto expand swap space by adding a swap file in Ubuntu
  5. Speed up Firefox by moving cache into RAM in Ubuntu

<!-- Post Tags -->
    <!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://ubuntuguide.net/howto-fix-ureadahead-problem-after-upgrading-to-ubuntu-10-04" dc:identifier="http://ubuntuguide.net/howto-fix-ureadahead-problem-after-upgrading-to-ubuntu-10-04" dc:title="Howto Fix ureadahead problem after upgrading to Ubuntu 10.04" trackback:ping="http://ubuntuguide.net/howto-fix-ureadahead-problem-after-upgrading-to-ubuntu-10-04/trackback" /> </rdf:RDF> -->
    <!--/entry--><!-- Rader Comments -->

    Reader Comments

    Your website is trying to install malware. NoScript shows scripts trying to run from kdjkfjskdfjlskdjf.com. Might have to clear out cookies as well to see it.

    [Reply]

    #1
    Written By Nolan on May 6th, 2010 @ 8:41 am

    After upgrading to 10.04, my machine seemed to totally lock up, and this message from ureadahead was the last thing displayed on the screen. SSH wouldn’t work, nothing would work — only CTRL-ALT-DEL would reboot.

    However, as has been said, the “exit 4″ code is a normal status message from ureadahead. ureadahead is not what’s locking up.

    I’d removed the “quiet splash” from the kernel boot parms in /boot/grub/menu.lst, planning to actually *see* all the boot messages (which I much prefer), instead of some splash screen, regardless if it flickers or not (upstart, the new boot system from Fedora and adopted now in Ubuntu 10.04, claims its major purpose is to prevent boot screen flicker; that’s such a non-worthy goal, imo). Anyway…

    Turns out there was a problem with my RAID setup and /etc/fstab wasn’t reflecting all the correct drive assignments, so the boot process (which formerly would have printed in text something about broken /etc/fstab and hit ctrl-D or type root pass to get a shell and fix the problem) froze up, attempting to display the problem message on the flashy, *non-flickering* Upstart screen (which wasn’t displaying, because I’d turned it off in the grub kernel parms), so the system sat there, not running SSH or anything else, waiting for keyboard input, displaying the last known output from the last thing to run properly, which had been ureadahead.

    Now, see all this problem from changing the way it’s been for decades? Upstart doesn’t really do what I want anymore (it doesn’t show the text output from the bootup processes) and it in fact appears to cause lock ups and confusion that take days to figure out. And then it ripples out across the globe. Judging from the amount of problems reported on this single issue, I know I’m not alone.

    I propose Upstart be either totally removed, especially from the Server version of Ubuntu, or else modified so that it can properly support text-only mode (i.e., “quiet splash” removed from kernal boot parms) and properly show errors and accept keyboard input while in this text-only, non-graphic mode.

    [Reply]

    Bret Jordan Reply:

    My frustration with the whole ureadahead and upstart and for that matter the new Grub 2.0 crap is that the developers and marketing departments are talking about how much time we are saving and how much faster things will boot. But what they are forgetting to put in to their magic formula is how much time it takes to troubleshoot a problem when one of these three things does not work just right. So I save 60 seconds on booting a server with ureadahead and I save a few minutes here and there due to alleged easy of use for the 2% use case with upstart and grub 2.0. But I loose hour upon hour of troubleshooting when one of these three things does not work right. So in the server case, I have a server that does not boot right because of ureadahead, upstart, or grub2.0. How many HOURS is this server off line while I try to troubleshoot the problem and fix it? I have more then lost any value in these tools when historically for the 98% use case, I could easily just edit a file here and there and recover a system. In the server offering it needs to be just brain dead simple. Stop trying to think for the admin and anticipate what they may or may not need. Give us a simple text file of the order that things should load (think slackware) and be done with it.

    [Reply]

    #2
    Written By MichaelBrenden on May 13th, 2010 @ 12:53 pm

    all I find in /var/lib/ureadahead$ is
    debugfs

    is this the “pack” file?

    [Reply]

    #3
    Written By ethnopunk on May 20th, 2010 @ 8:03 am

    I’ve installed Kubuntu 10.04 twice, and both times the system boots up fine the first time, but as soon as I reconfigure it to my taste and reboot, it fails with ureadahead status 5. On both occasions, the kubuntu installer has also installed grub in such a way that I can’t boot into the other distributions on my hard disc. That is no doubt a different bug, but it does render the first one more serious, as I can’t get back in to reinstall lilo !!

    On all my systems, I maintain three pairs of partitions for / (8 Gb) and /var (4 Gb) of three distros. At the time of upgrade, these contain the current version of ubuntu before upgrade, the new version to which I am upgrading, and a previous version no longer in use. One of the first things I will do in my new installation is manually alter /etc/fstab to mount the other distributions (in this case, upgrading to lucid, they will mount at /distro/karmic and /distro/jaunty), so I can copy files across. At this stage I will also add the other _big_ partitions, which mount at /home/users and /home/Photos (and a few others). To support editing these files, I hack /etc/apt/sources.list and add a few packages, including kde3-kedit. After this, rebooting reveals the ureadahead problem.

    Now an ubuntu version lasts six months, which means, if I am deeply unlucky, I will reboot my system a dozen times, but mostly, it would be less. Saving five minutes on boot time will thus save less than an hour during the life of the distro, whereas a single failure to boot will cost me a lot more than that. For my desktop machines, I want to tick a box that says “bombproof safe” rather than “fast to boot”. For laptops, I may make a different choice (although installing lucid on my laptop seems to have worked OK).

    At the end of all this, I still have no idea how to get my system to boot into lucid….

    [Reply]

    Ethan Reply:

    I installed 10.04 and ran it without issue for a few weeks, then last night installed the latest stable kernel 2.6.33 and did a sudo update-grub. Everything seemed fine until I rebooted this morning when I got the ureadahead error with “status 5″ – and some other errors. I rebooted again and saw some more errors, but then it booted normally. Any ideas?

    [Reply]

    分享到:
    评论

    相关推荐

    Global site tag (gtag.js) - Google Analytics