Testing a Pre-Release, Parallel Firefox
Firefox, in its official version, still lacks support for multi-threading (running on different processors), though Chrome and Internet Explorer 8 both have this feature. A Firefox project called Electrolysis is underway to close this gap. A blog author tested a pre-release version of Firefox that loads different tabs in parallel, and he chronicles his findings, including a huge speedup in Javascript vs. Firefox version 3.5 (though the pre-release still lags Chrome in many of the tests).
This is a good thing. Firefox desperately needs to modernize. About the only killer feature left in Firefox is customization. Other browsers have already caught up to Firefox in speed, features, and standards support.
Taxation is legalized theft, no more, no less.
Firefox, in its official version, still lacks support for multi-threading
Firefox certainly supports multi-threading. A thread is not the same thing as a process.
Multithreading still relies on a single point of failure - the shared memory space.
By doing what Chrome did, and breaking each tab instance into its own process, any single tab can crash/hang without affecting any other page.
I know when I load an MPG video that it sometimes hangs the browser, and I can't do anything (close/minimize/switch away) while the media player is being loaded. This sometimes causes me stress.
Firefox does support multithreading, what it doesn't support is multiprocessing. Firefox runs as a single process, whereas Chrome has a separate process for every site, plugin and extension.
GENERATION 25: The first time you see this, copy it into your sig on any forum and add 1 to the generation.
Don't get me wrong, I love FireFox and it's my preferred browser but I do feel like it's falling behind in a lack of ability to take advantage of certain hardware and software advances.
First as noted, FireFox does not really take advantage of multiple Cpu core's and there's no official 64 bit version. I've read that the developers opinion is that why have a 64 bit version if the most necessary plugin, flash is not available in a 64 bit version so why bother. But Sun does make a 64 bit JRE and that's half the battle and I honestly believe that if a 64 bit official version of FireFox were released that would spur Adobe to jump on the band wagon and produce a 64 bit Flash plugin.
On so many levels !! first of all - The title of the Electrolysis page clearly mentions using multiple processes - where the heck did anyone mention multi-threading? Secondly - multi-threading is not the same as running on different processors. You can potentially split a program into user level threads just to simplify code. Third - firefox already supports multi-threading. The only problem is that threads are still connected to the same PID and killing that in windows/linux/mac will kill all threads along with it. The original article states they are starting from a chromium base. That may be the reason for speedup in Java scripts test ?
W W W Working ing ng g f fi fine for m m me. K Ku Kud Kudo Kudos! !
Table-ized A.I.
Process-per-tab shouldn't speed up Javascript unless you're doing something else in a second tab that's hogging CPU. Most likely the Javascript performance gains came simply from the fact that he was using a 3.7 branch of the code. Which is kind of sad, considering bleeding-edge Firefox still lags behind Chrome by a considerable margin.
Multi-threading is running multiple threads of execution on a single cpu, which has been done on single-cpu processors for decades. That's not multiprocessing.
I thought this was a tech site.
What next - an article about how someone just bought a new hard disk to upgrade their ram, because it was cheaper than chips and a lot bigger?
I'm not sure if you're trolling, but the tone of your post is extremely sarcastic. That's an absolutely terrible attitude to have.
Progress isn't defined by large leaps, but by the small steps that allow them.
Ill wait for firefox to use my cores, for now im quite happy with the extensions, cant live without firebug, adblockplus, webdeveloper.....
maybe now firefox won't need both cores
You are observing a competition between the browsers and the CPU manufacturers. And the thing that you fail to understand is that "it does not matter". I am NEVER going to buy another machine with an Intel processor (because they burnt me a decade ago) and I view payback as sweet. Current CPU's are more than fast enough for most applications, i.e. a Pentium IV Prescott (single CPU) (which I inherited, so didn't have to purchase) works fine. N years ago (perhaps 8-10) I was able to work and be productive using a Pentium Pro @ 200 MHz (circa Y2000). Anyone who needs/wants more processing power is dumping the electricity down the non-productive heat drain (e.g. gamers) or pursuits which will never produce anything of use (e.g. SETI@HOME).
Yes, I am taking direct aim at people who really don't know what they are doing. So sue me. Or perhaps more productively engage in a constructive discussion with me with respect to the most efficient way to use the resources at our disposal and how to get to the point where that is the focus of our society rather than consume, consume, consume (electricity or otherwise). You decide.
The bottom line is that you have to run up against the fact that a decade ago CPU's could satisfy any reasonable need for processing power. Now all one is buying CPUs for is "fluff" -- watching TV on ones computer, playing games, etc. I.e. it produces nothing, it contributes nothing, it is simply a consumer computing mentality -- my computer exists to entertain me. Sad IMO. "Yes, I completely support driving society into a non-productive cloned mentality" (i.e. one manufacturer rules all). "I support current business models because that will contribute to driving us into submission". One has to ask oneself, "When will Intel say "stop"? When will they say we dedicate ourselves to a more efficient, less Earth-damaging) processor, like ARM?" or "We embrace competition because it will further motivate our developers to be creative?"
The processors have been more than sufficient for a decade or more. What you are currently witnessing is whether or not one should view the competition as being valuable. I would currently argue not, and therefore Intel is proceeding towards a monopoly, in which it cares little about the customer. Which is the same place I found myself in the mid-1990's when the chose to desupport the Intel camera that I was using. Does the concept of "sorry, we are going to force you to upgrade" (because it increases our profit margins) ring any bells?" (I don't care that your current computer is completely sufficient for your needs -- you need to do more, need more, that requires an upgrade, etc. Watch my commercials to prove that that is the case.)
If the old software/hardware works fine then be comfortable with it. Do not easily accept that upgrading is a requirement.
Regards
Robert Bradbury
I just checked in Task Manager and Firefox has 27 threads open. You were saying?
I think multithreading means launching multiple execution threads and it's up to the scheduler to assign each thread to a logical CPU, based on load. If you write and run a program that spawns two threads on a dual-core machine, with no other CPU-intensive software running, then you will notice that each thread is executed on a distinct CPU (core).
> Firefox, in its official version, still lacks support for multi-threading (running on different processors)
Seriously? Someone from Slashdot wrote this?
The Silver Surfer's not white, he's sliver. Just sayin.
what can you say about firefox? i s it the most popular now a days ? or there are other browsers that dig this firefox to the ground? regards, robert
You have a fairly complicated comment there. Let's dig a little.
This has so many red herrings I will skip it entirely. The second part gets more interesting.
"...productively engage in a constructive discussion with me with respect to the most efficient way to use the resources at our disposal and how to get to the point where that is the focus of our society rather than consume, consume, consume..."
"Being productive" is more than creating text & spreadsheets. "Make the recreation more efficient". *TV* is one of the most inefficient recreations out there! Not the show - the timing schedule. A lot of "risky" shows are arriving with 16 episode contracts instead of 24, spread out over longer periods to eke out some more "remember me" mindshare. However, it was the internet entertainment multiverse that thrashed the TV mentality to smithereens. Instead of having to wrench our lives to see "our show" for seven months of the year, batch it on Hulu and churn through it on four Saturday Graveyard blocks from 2AM to 7AM. Remember the misery of "nothing good being on"? And even when you're watching it, you can do low level work during the boring scenes. I gained two virtual years of life back while still being satisfied with four show's worth of entertainment.
But if you're now looking askance at processing power, "the cool work" these days eats processor power like a hog. Multimedia editing audio commercials, online collaboration, enterprise accounting, onscreen CAD, information modeling rendering, etc. I bought a quad core machine precisely because the "document machines" couldn't cut it.
My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
I made the switch from Firefox to Chrome, and I have not looked back. The idea of an individual process per tab intrigued me when Chrome was first released. The fluid tab/window transition is an awesome feature, which dragged me over to the other side. I tend to have 3+ windows with 30+ tabs each. Is a individual process per page really the most viable solution. I want my web applications to be even distributed across all my cores, not abstract nesting. Each page is free to crash on its own, though if a plugin crashes, the plugin crashes for all tabs. Sometimes, when I close 50+ tabs, Chrome takes a crap right in the middle of the parade (something Firefox did somewhat less of). I seem to be completely satisfied with Chrome, and I have no reason to return. Implementing a feature I already have in Chrome is not going to excite me enough to make the switch back. When browser games become even more popular, and they start accessing graphics hardware directly, individual processes are a good idea since they would nest the abstract layer. The only thing that ever brings me back to Firefox are the wonderful addons like firebug, imacros, and noscript. But the large number of addons I had installed was also a determining factor for me to leave firefox, which I felt was kind of like leaving a wife after she puts on weight.
While the code name is electrolysis, it is called Content Processes. According to this https://wiki.mozilla.org/Content_Processes#Phase_II:_Parallel_Improvements , the project is still lagged behind on completing Phase 2, projected to be completed November 1st, 2009. The real multiprocess work isn't even going to hit until Phase 4, which is going to be months from now. I'm really not sure what the author of that blog tested, since the only multiprocess aspects of the electrolysis build are disabled by default, requiring dom.ipc.plugins.enabled to be set to true in about:config. It is not necessary to compile the build yourself either, as the latest electrolysis nightly build can be found here: http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-electrolysis/ precompiled for your enjoyment, not that it matters.. since it's so early in the development process that there is no benefit whatsoever outside of helping them track bugs.
because otherwise it will peg both my cpus whenever I go to one of those websites. And why can't ff handle these still? It's ridiculous that this browser can still hang cause of some website waiting for some unavailable resource.
How can you make use of 12+ gigs of ram with a 32bit OS? I had to use a 64bit OS just to take full advantage of my hardware.
I wish my CPU were 128bit and I could expand my ram by the hundreds of gigs.
The bottom line is that you have to run up against the fact that a decade ago CPU's could satisfy any reasonable need for processing power. Now all one is buying CPUs for is "fluff" -- watching TV on ones computer, playing games, etc. I.e. it produces nothing, it contributes nothing, it is simply a consumer computing mentality -- my computer exists to entertain me.
I have an Athlon XP 3200+. It's a nice chip, and all, a 32bit one. And for many tasks, it is more than adequate. But when watching flash video full screen on my 32" HiDef TV, it's very jerky. Yes, it's because of Flash being poorly optimized. But it's also what I want to do with my computer, because I DO watch TV. And rather than spend too much money to get Cable TV or Dish, I've switched to all 100% online TV. It saves me $75/month and is a better user experience! I no longer have to pre-plan my viewing, I just watch whatever's available when I want, on demand, right from the beginning of the show.
But while it works well on the Mac mini in my bedroom, and my Dell laptop, it doesn't work so well on the old Athlon. So, I go to Pricewatch.com and buy a new Athlon X/2 motherboard/video card combo upgrade board with 2.1 Ghz of RAM for $150, and now I have a 64-bit, dual-core MB, good RAM, fast processor. Flash plays nicely, and all for less than the cost of a decent DVD player.
Are you still telling me that the CPU doesn't matter? Maybe you are happy with the ancient processor from 10 years ago, and for many tasks, it's probably good enough, but not for everything...
Sorry about your camera, dude. I use a $59 generic digital camera I got in the shrink-wrap isle at the local Best Buy. It's 10 Mpixel with optical zoom, records decent quality video, and came with a free 2 GB memory card. It doesn't have every bell and whistle, but does a good job taking pictures and video. Armed with rechargeable batteries and a cheap external USB drive, my pictures cost almost nothing at all and I don't give a hoot about compatibility since it uses standard flash cards and image format. (JPG/WMV)
What else do YOU want?
I have no problem with your religion until you decide it's reason to deprive others of the truth.
You missed the part about Chrome OS and everything becoming a web application, not a static web site. If all modern web browsers can run javascript like native code, it will change the way programs are distributed, and in fact, will lead to a safer computing environment, since you won't have to install any of it locally. In the meantime, look into noscript if you're that concerned, and look forward to better web applications that run like native applications.
Sorry, didn't realize I wrote so much. Here's the tl;dr version:
I'm pretty sure that all or almost all major GUI programming frameworks proceed by handling one event at a time. An event isn't handled until the previous one is done being handled. This is all done in a single thread.
I use Chrome for the speed. But on some websites, I am forced to use Firefox, especially when there are forms and text boxes with formatting tools in the browser.
O this learning! What a thing it is - William Shakespeare
Remember the misery of "nothing good being on"?
I still feel that way D:
Not really sure but you can ask them why after you download it from http://labs.adobe.com/technologies/flashplayer10/64bit.html
"... cross platform stability..."
Firefox is NOT stable. It is the most unstable program in common use.
See the comments tab for this crash report ID: http://crash-stats.mozilla.com/report/index/67f332db-205a-4944-8f88-1bb7a2091220
Typical comments from that comment tab:
"I can't believe how often firefox is crashing recently on multiple computers!!!"
"This is ridiculous! It happens everyday!"
"Mozilla crashes on average 10 a day. Can you help?"
"firefox is crashing on me twice a day. any advice please? thanks Graham"
"This new version of Mozilla sucks. It crashes on my multiple times each day."
"I keep going from tab to tab and after a while Mozilla crashes.."
"please fix this crash problem, thanks"
The underlying problem is that the Mozilla Foundation is very badly managed. People have filed Firefox crash reports for more than 8 years. Although Firefox became a little more stable during that time, the latest versions have progressively become far less stable.
It's obvious that Firefox, if it continues to be mis-managed, will eventually become obsolete.
A recent new version of Thunderbird eliminated important features: Quick searching for messages and listing all recipients of an email. That version also disabled the Lightning calendar! Whoever manages the Mozilla Foundation is not sufficiently competent.
Mozilla Foundation has been receiving more than $50 million each year from Google.
"Firefox does support multithreading, what it doesn't support is multiprocessing" - by A12m0v (1315511) on Tuesday January 05, @12:05AM (#30651402)
Does it doesn't HAVE to support "explicit multithreading" (specifically targetting a thread of execution towards a particular processor, via API calls such as SetThreadAffinity) though?
See, the way I have always understood it, is this: First of all, there are diff. kinds of "multithreading".
The first being "coarse" (where threads work on diff. datasets, NOT the same one (more difficult to do is the latter, w/out "race conditions")). An example here might be say, using Excel to calculate some cells in 1 thread, while printing or reformatting other cells in a worksheet on another thread.
The second being "fine-grained multithreading" (where multiple threads process the same dataset as other threads present).
Now, in EITHER CASE?
The Operating System memory and process mgt. subsystems will send a thread to whatever the least saturated CPU core present & especially when CPU 0 is 100% cycle saturated (and CPU 1-N present, are not) in EITHER case above...
Thus - the kernel mode subsystems I noted will take care of it FOR the PID in question, for the multithreaded process.
Those kernel mode process mgt. subsystem can send a thread of execution beyond the parent core process off to any CPUs (as in SMP) or, to any cores (as in multicore CPUs of today) present that are NOT 100% saturated by other running processes OR threads, but, ONLY IF the first CPU where the parent thread of the PARENT PROCESS is completely 100% cpu cycle saturated (meaning NO FREE CYCLES ARE AVAILABLE ON IT).
AND?
IF the FF team has to go SEPARATE PROCESSES?
There are API calls for that, on Win32 @ least, such as SetProcessAffinity on Win32 (which can direct ENTIRE PROCESSES to diff. CPU cores)!
However, since FF is multiplatform?
I am not 110% absolutely certain that other OS platforms have API calls &/or kernels ready for this!
(Yes, by today/nowadays though? I'd have to say MOST if not ALL, do!)
See, I state that, because I know Linux had to gain abilities like this in order to be classified as an 'enterprise ready platform' to do concurrent kernel mode threading, whereas it only had "round-robin usermode threads" which are sometimes called "cooperatively scheduled threads" by the by (driven by a single kernel mode thread though) before a certain kernel build (not sure of how early that was though).
I had a fairly large discussion w/ some folks a few years back on this, here -> http://www.hardwareanalysis.com/content/topic/42110/ &, it's part of the "why" of why I noted all this "madness-N-lunacy"... but, I didn't get as "in-depth" there as I did here (but I did put up some good examples of where & why threads can be useless too, with an easy to understand MATH example as to why as well) & especially on what went on in Linux early on.
APK
P.S.=> We're probably on the "same wavelength" here, but these discussions, without being TOTALLY SPECIFIC? It can be 'confusing' as to what is meant...
E.G.-> As in the diff.'s between "coarse multithreading"- where you have threads working on DIFFERENT TASKS, instead of the same one & same dataset being worked on vs. "fine-grained multithreading" - where 2-N threads work on the SAME dataset @ the same time/concurrently.
It can be confusing, especially w/out noting specifics & circumstances, such as the type of multithreaded design involved (coarse vs. fine-grained etc. et al) AND, if the program is trying to send off specific threads of execution to SPECIFIC CPU's (SMP) or CPU cores (cpus that folks have today with multiple cores on them) itself (explicit multithreading by the app itself & with the app directing what CPU the thread runs on)... apk
You can potentially split a program into user level threads just to simplify code.
Ermm... maybe I just don't have sufficient experience writing real-world code, but when do threads ever simplify anything?
I mean, you have to worry about race conditions and deadlocks all of the sudden, which means you have to pretty much lock everything, and in some consistent order.
Plus, if you have some nice abstraction (say, a shared hash map) which does all its own locking the right way, making every operation (insert, delete, retrieve, etc.) a transaction, you need to break the abstraction and poke at the internal locks to make those operations part of a larger transaction.
Have a look at what Hans Boehm has to say about getting C++ threads right, and what Simon Peyton-Jones has to say about Software Transaction Memory.
See http://www.youtube.com/watch?v=mrvAqvtWYb4 for C++ threads; I can't find SPJ talking about STM, but there are plenty other talks about it on google video and youtube.
But you might of course be right, so I'm eager to hear an example. Please tell me how threads can simplify things.
it looks its a OS problem. Try doing automatic updates, if that doesn't help try reinstalling vista. you probably have the installation disk. if that doesn't work just send it back and they will send you a new one. Lean Muscle X
The one who took the lead a while ago is now lagging a bit behind. Go Firefox!
I am not really here right now.
can we also have gui in a separate thread from the networking stuff?
too often i find the gui is frozen for a few fractions of a second (or more), while the browser is fetching stuff over the network
If Pandora's box is destined to be opened, *I* want to be the one to open it.
I run 64-bit Linux and ALWAYS experienced crashes with the 32-bit player and the wrapper workaround. After manually installing the 64-bit Flash player, it's stable. I really have no complaints now.
Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
When I reload firefox using TabMix or SessionManager, it attempts to load every tab at once, sometimes upwards of 100-150 tabs. This is maniacal and crushes my poor little home router (which surprising performs better than the multimillion dollar work infrastructure I use).
Can we get staged loading of tabs, say load 4 or 5 at a time, rather than 150 all at once?
On my Linux system, Firefox starts up in less 1/2 to 1 second, surely that's fast enough for anyone. The time it takes for a page to load is still limited more by my internet connection speed and the speed of the server than anything. I notice little difference between other browsers and Firefox even on our corporate network speed. Is our society so caught up on "more, faster, now" that no one can wait a couple extra milliseconds for something to happen? How fast is fast enough? No one can read that fast.
Firefox's only major issues in my opinion: Memory consumption
If you think Firefox uses a lot of memory, don't use Chromium.
With an identical set of 9 tabs open, the total Resident memory:
And that's not really a fair comparison - Firefox has 15 extensions and a 12 plugins installed.
Cheers,
Toby Haynes
Anything I post is strictly my own thoughts and doesn't necessarily have anything to do with the opinions of IBM.
The python and java threading tools are still not software transaction memory, so you still have to poke behind abstractions, or not abstract the locking protocols away.
That's the real problem. It's not hard to write pthread_mutex_create(&mutex, pthread_mutex_default_parameters). It takes a little more typing, but it forces you to think explicitly about locking; java gives you the impression that if you just synchronized everything then all is fine.
The problem is that you in many applications want to nest critical sections, but mutex operations don't really nest---you have to manually traverse the critical section nesting tree, pull out all the mutexes, then lock them in some canonical order (say, by address, if they're all embedded or embeddable in the same flat address space).
That part, the killer feature of STM, is not easier in java or python.
Feels slow like an evil year here.
Especially the wonderbar thing (or whatever they called it), its very slow at the start - nice feature. Slow to deliver.
If Google really cared they would fix Android Chrome to reflow text, instead of discriminating
Actually, you should see both threads running on the same core. It's harder/slower to get locking right when threads span multiple cores, which is why we have such things as processor affinity.
Look, man, when you really think about it, Google is misleading Mozilla, whether deliberately or not.
When push comes to shove, who really *needs* a multi-process browser? It is not as if we are running distributed computation on our web browsers!
Yes, there is a case to be made for some stability and security with multi-process browsing, but it is a fairly weak one.
There is no point in wasting all that manpower trying to be fashionably unproductive.
What Mozilla really needs to work on is a truly secure sandbox for Firefox add-ons. This is where good computer science must be applied.
"Do not install any more Firefox plugins. If you do that it does not crash nearly as much."
"Nearly as much" is still crashing.
Also, blaming plugins and giving the idea that Mozilla should not be responsible for some kinds of crashes is one of the 22 excuses Mozilla developers give for not fixing the crashes. They've been using those same excuses for 8 years.
It seems likely that, as soon as there are adequate plugins available for Google's browser, Firefox will become obsolete. Mozilla management is that bad. I guess that Mozilla employees don't worry about losing their jobs.
Actually, you clearly see the thwo threads running on different cores in Windows XP and "jumping" from one core to the other in Windows Vista. That is consistent with the fact that in XP you get almost 100% CPU usage (baoth cores) when both threads re running and around 50% (one core only) if you pause one thread.
I deserved that down mod My rant was "off" subject or at least could have been more on subject but one gets easily distracted listening to John Williams Star Wars Score in Quadraphonic sound
I'm tired of the Firefox behavior of loading and processing a web page sequentially, pausing every time it hits an embedded image or other URL where the server these things are hosted on is slow or not responding. Doing this needlessly holds up the entire rest of the page load. Usually these are adds and crap on remote domains. If the devs really want to speed up Firefox, they'd download an entire web page, scan all the URLs, and then grab the remote content in parallel, so that a single slow server doesn't bring the entire show to a crawl.
Or, does this feature already exist, but is hidden from the average user in about:config?