Intel and Micron Unveil 128Gb NAND Chip
ScuttleMonkey writes "A joint venture between Intel and Micron has given rise to a new 128 Gigabit die. While production wont start until next year, this little beauty sets new bars for capacity, speed, and endurance. 'Die shrinks also tend to reduce endurance, with old 65nm MLC flash being rated at 5,000-10,000 erase cycles, but that number dropping to 3,000-5,000 for 25nm MLC flash. However, IMFT is claiming that the shrink to 20nm has not caused any corresponding reduction in endurance. Its 20nm flash uses a Hi-K/metal gate design which allows it to make transistors that are smaller but no less robust. IMFT is claiming that this use of Hi-K/metal gate is a first for NAND flash production.'"
I love SSDs, especially for development work. Nothing like having a dev VM per client each on their own little SSD isolated from your non-work related default operating system. But SSD's are dangerous...
SSD's are like crack to bad applications. The magically make them feel better, while masking the underlying problem. I'm worried what the future is going to hold when the average desktop comes with an SSD drive. Already I've already seem some development companies demo financial software on striped SSD's as if that's what everyone runs these days. I guess it's no difference then an abundance of RAM and an abundance of CPU power. < Insert in my day rant here >
-Malakai
A Dragon Lives in my Garage
Yay!
http://xkcd.com/865/
Well, that's the problem, isn't it? Lazy programmers aren't writing efficient code, they're just relying on Moore's Law to push them through. Of course, I don't think the average consumers understand much about efficiency, seeing as eyecandy is so popular, even a selling point.
Let me know when the real SLC SSD's are out, not this half arsed slow and unreliable "MLC" crap.
Same thing that has happened with every change that has provided a significant performance improvement with a given resource...
Applications that have a little more functionality, and lot more waste.
Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
Same thing that has happened with every change that has provided a significant performance improvement with a given resource...
Applications that have a little more functionality, and lot more waste.
Except with SSD write lifetimes falling with every generation, in this case 'a lot more waste' could mean trashing your drive in a few months.
SSD's are like crack to bad applications.
I disagree that SSD has anything to do with it. Average desktops already come with more than 500GB SATA drives. Nobody is stopping poor coder to push inefficient code to market as long as people are ready to throw money at it.
hilarious
Average desktops come with the slowest bargain-basement hard drives the manufacturer can buy by the truckload. There is an excess of processing power and RAM, which apps haven't wasted. There is sure as hell no excess of disk speed.
"When information is power, privacy is freedom" - Jah-Wren Ryel
So? Who cares how inefficient an app is, as long as it works? If better hardware, instead of better software, makes the switch from 10 seconds of swapping to just 1, the problem is solved.
Sorry, this is my knee-jerk reaction to rants... :P
I rarely respond to comments. Also, don't ask for clarifications: a brain and Google are faster, believe me!
It could be argued that the problem lies with hard disks and not the applications. SSDs are nice because you aren't forced to artificially contort data access to fit the slow-seek/fast-linear-throughput model of magnetic hard disks. Removing an arbitrary restriction on program style is a good thing.
HAL 7000, fewer features than the HAL 9000, but just as homicidal!
Already I've already seem some development companies demo financial software on striped SSD's as if that's what everyone runs these days.
Have you seen prices in the financial industry? A Bloomberg terminal costs thousands per month. You can pay $50,000 or more per year for access to some data feeds.
Spec'ing a "disk" that costs $5000 is no big deal.
Unless you are talking about software targeted at individual people that are not rich... The cost of the hardware is miniscule compared to the cost of the access to the data.
>> I don't think the average consumers understand much about efficiency, seeing as eyecandy is so popular, even a selling point.
Buying and investing for tomorrow is much better than short term gains.
RAM is certainly not the bottleneck in terms of speed, but quantity is never excessive. In fact, most of the performance penalty you feel on low-end machines is when you run out of RAM and start swapping more heavily to the slow fixed disk.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
I suppose some call that language evolving. I call it ignorance.
This is nothing new. There was a time that I vividly remember in which memory cost over $200 a meg (and it cost even more before that.) A single line of redundant code was considered a sin. The price of memory and hard drive space came down and now software is more bloated as programmers focus on other things like security and usability. Is that bad? Yes and no. Like all things, the effect of an improvement in something is many fold. There are positives and negatives... we just hope it's mostly positive.
You are absolutely right... on the desktop. On laptops/tablets/phones you have the battery to contend with. Most of the time when I notice my battery bar go down really fast on my laptop it is some stupid flash thing hogging the CPU in an open web page. Sometimes it is some other poorly written application running wild. I can close it, but by then I've already lost time.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
This isn't about storage size. That war is lost for the desktop ( see Bloatware ). If it wasn't for smart phones and tablets cause people to still think about storage size for some applications, it would be even worse.
When we talk about SSD drives vs HDD drives, were are primarily talking about drive bandwidth and access times. SSD's have no seek time, no spin up time, and their bandwidth in read/writes are at least 2x as fast, and can be up to 4x or 5x as fast.
Think of the engineering and time that goes into making an application 'snappy' to load. Like say Chrome or Word or Photoshop. Now weight that engineering cost vs simply installing an SSD. Now you see how this is going to affect future software development.
But GP ( or uncle, or 2nd cousin) is right, this is a Rant. Each of these Moore's law watermarks tend to have similar effects on software development. I think bleeding edge apps ( including games ) generally herald what is to come....
Buy stock in SSD manuf I guess.
-Malakai
A Dragon Lives in my Garage
Who cares? It might be a truism, but the people who care, care. As a programmer, there's a balance between maintainability, performance, and ease of development that I care deeply about. I'm proud of my work and I'm not willing to slap something together with no regard for efficiency or longevity.
If I were making a game, I would probably be willing to sacrifice some ease of development for the sake of better efficiency. If I were making a prototype to demo UI concepts, ease of development might be paramount. Whatever trade-offs I'm making, I try to be aware of them and make good decisions because I care about my work.
It doesn't help that Windows uses swap regardless of how much RAM is free (on my gaming machine, if I enable the swap file it is used when there is MORE THAN 10GB RAM AVAILABLE). Switch to Linux and that limitation disappears, it will only start swapping when the RAM is somewhere between 2/3 full and completely full, depending on the (much more sane) default setting. 4GB RAM is actually pretty hard to use up - especially without help from a Firefox instance with a zillion tabs open. Most average users will always have lots to spare.
"When information is power, privacy is freedom" - Jah-Wren Ryel
People who like efficiency care. People who understand a computer has many apps working alongside and with each other care.
Efficient saves money in the long run.
You're attitude is why the industry is a shithole compared to other engineering disciplines.
Sorry, this is my knee Jerk rant to small minded, unthinking responses.
The Kruger Dunning explains most post on
"Is that bad?"
Yes.
The fact that people in the software industry think bloat security and usability are separate independent things and not related is a horrible thinking. People keep doing designed like they aren't related to each other. This i sloppy engineering.
The Kruger Dunning explains most post on
You havent has the pleasure of using VS 2010 with an IIS and SQL Express server instance (And McAfee) running on a 2Ghz C2D with 256MB RAM and WinXP have you?
Not all programmers are doing that. Android and Windows have both been getting faster on the same hardware.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
As a sanity check - I found some data from Mtron (one of the few SSD oems who do quote endurance in a way that non specialists can understand). In the data sheet for their 32G product - which incidentally has 5 million cycles write endurance - they quote the write endurance for the disk as "greater than 85 years assuming 100G / day erase/write cycles" - which involves overwriting the disk 3 times a day.
That's for old-ish tech and a smallish drive. For consumers, large drives get written to exponentially less. Consider, the vast bulk of consumer "big" drives are and movies. These are big, chunky files that don't get overwritten very much. As a consequence the vast majority of your drive stays clean. For most people, they'll want or need to buy a new hard drive long before the old one wears out. Please read up on the facts before spouting nonsense.
On the other end of the scale you have this. Why solve a problem the really, really hard way?
Live today, because you never know what tomorrow brings
Already I've already seem some development companies demo financial software on striped SSD's as if that's what everyone runs these days.
I think it's a fair assumption if you are selling financial software to a financial company that they will buy a SSD if that's a requirement. Just because developers aren't optimizing for a small footprint these days it doesn't mean there's no optimization being done. It just means that they optimize for something else (development cost, feature set, or whatever their business plan says is most important).
By the way when you see a computer game demo these days, do you think "These guys are on crack if they think everyone's got one of those cards?", or "With these recommended specs what is this written in, VisualBasic?" ?
How do you tell it's using your swap? The OS will commit memory to swap when it is not being used yet to free up more real memory for other applications.
Well, that's the problem, isn't it? Lazy programmers aren't writing efficient code, they're just relying on Moore's Law to push them through. Of course, I don't think the average consumers understand much about efficiency, seeing as eyecandy is so popular, even a selling point.
Of course the biggest offender of relying on Moores Law is JAVA...
Task manager --> Performance?
"When information is power, privacy is freedom" - Jah-Wren Ryel
I haven't had a desktop system with only 256MB of RAM in 10 years. Even my Athlon 64 system had 1GB to start. Sounds like you were being punished or something.
This moralistic spin ("lazy" programmers) is absurd. The tradeoff between development cost and hardware requirements is obviously affected by cheaper yet higher-spec hardware. If you want to run WordPerfect for DOS at insane speeds on modern hardware, go right ahead. That piece of that software cost $495 in 1983 (cite) and was written in assembly language for speed. (I hope the connection there is not lost on anybody).
How do you tell it's using your swap?
Um, by using the system utilities to see disk activity and the associated files (the windows equiv of lsof).
The OS will commit memory to swap when it is not being used yet to free up more real memory for other applications.
Even with 10gb free? Why? Since this is his gaming machine, I'm assuming that he's talking about enabling the "minimum suggested" pagefile of 512mb in size. Even with 16gb of ram, windows will waste time with io to this pagefile.
My college labs, getting upgraded next semester to i3's with 4GB though
Those were toy programs, but the experience was still painful
Ha! My reaction is opposition, not really debate ;) . Most rants are overreactions, so I don't take them seriously.
Of course I care about efficiency, and I can tell a software patch that brings O(n) to O(sqrt(n)) is instantaneously better and cheaper than spending extra bucks in chips and power.
My point still applies, though: adding horsepower to your machine can be a faster solution than optimizing your code, if you have the resources available and need a solution *today*. I did it one or two times, when I had deadlines. But, as I said, I'm not looking for a debate, just a little cynicism on the face of exaggeration.
I rarely respond to comments. Also, don't ask for clarifications: a brain and Google are faster, believe me!
They aren't lazy, they're productive, and taking advantage of the resources available.
When they're tired of putting the first-to-market markup and the bleeding-edge markup in their bank accounts, then they'll address reports of sluggishness or resource starvation in less-profitable market segments.
Right now, though, the fruit that are hanging low are fat and ripe and still fit in their basket.
I'm worried what the future is going to hold when the average desktop comes with an SSD drive. Already I've already seem some development companies demo financial software on striped SSD's as if that's what everyone runs these days.
By any chance do those companies also sell the hardware where their software is supposed to run at peak efficiency? And do those companies also sell support contracts to maintain and tweak those systems? Because if they do then I bet dollars to doughnuts that their main motivation isn't technical perfection but the maximization of their company's bottom line.
Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
Well, that's the problem, isn't it? Lazy programmers aren't writing efficient code, they're just relying on Moore's Law to push them through. Of course, I don't think the average consumers understand much about efficiency, seeing as eyecandy is so popular, even a selling point.
Most of the programmers I know don't care about timelines, eyecandy, popularity or selling points. These guys are computer nerds. Just as car nerds want their hot rods to purr when idle and roar when pushed, most programmers want their code to run fast, efficient and clean. The problem is that programmers are under thumb of timelines and feature bloat put on them by management and sales.
This is not necessarily a bad thing as if it were not for deadlines, no programs would ever be finished. Yes, code is more inefficient, but that is only because the hardware has allowed it to be. It does not hurt the bottom line if a customer has to wait 1.5 seconds for program to launch or 3. The bottom line is what management cares about, and to be fair, it is what drives business and keeps Red Bull stocked in the break room fridge.
There is no "I disagree" mod for a reason. Flamebait, Troll, and Overrated are not substitutes.
you know, if done correctly, as apple did it, "eye candy" can be quite efficient. Unless you like your video card sitting there, doing nothing, being /efficient/ (rolls eyes)
CS majors know the time/space tradeoff, but they never get taught the 3rd, crucial, tradeoff of the set: comprehension!
I understand what you're saying but at the same time software that wastes compute resources is also wasting dollars. Dollars needlessly spend on employee hours (waiting for operations to complete), new/upgraded hardware to cope, and one that many people might not realize extra software development, maintenance and support costs. Inefficient software quite often reflects a poor implementation under the hood and frequently behind the wheel. One thing nearly every engineering discipline recognizes is that the fewer moving parts a system has the inherently more reliable and maintainable that system becomes. This is no different with software. Software bloat is the bane of those trying to implement features to support new requirements and a nightmare for those trying to ensure quality control. Software bloat often shows up in the user interface as well in poorly implemented workflows that further slow down productivity.
Contrary to popular opinion, fancy GUIs replete with eye-candy generally aren't the problem--normally they're built on top of highly abstracted, well optimized and tested frameworks--it's evolution. One of the more common sources of inefficiency is software bloat. Bloat can even plague software that was initially well constructed. Over time, after several iterations of evolution the feature requests, the various modifications and the resulting baggage train required to support them can grow substantially and weigh down a system. It isn't that the bloat is a requirement of a given feature set per-se but rather reflects a set of compromises made necessary by an initial architecture that wasn't designed to support them. Management and even sometimes the engineers have a hard time accepting that a significant or even complete tear down and reconstruction with a new architecture is the best and most appropriate choice. One of the easiest and most notable places this problem can be recognized is in web browsers. Take a trip down memory lane and compare the features, bloat, and usability of the various web browser throughout time.
Two of my imaginary friends reproduced once
I'm not sure that these "large files" prove what you think it does. Then again, I'm not entirely confident that the opposite is true, either. Even if it doesn't prove what you think it does, I think your point still largely stands.
Let's say I have a 32G SSD device. If I put some movies on here, I'm left with, say, 16G, of "active" disk space usage. If I then go and use what's left very actively, the write endurance for that section falls given the same usage patterns. For example, at 100GB/day erase/write cycles, I've cut it down to ~43 years. If I can interleave the deletion/replacement of the movies into the mix, then I should trend back up to around 85 years, but I don't think that the life span will be extended beyond that, again, assuming constant usage.
Where your point largely still stands is how much less than 100GB/day a consumer will use their disk. By storing 16G of movies/music and only going through 50GB of erase/write cycles, we get back up to 85 years. And both of these numbers are still way too high for consumer usage - 3GB/day might be stretching it as an average for consumers.
And don't forget that if you overwrite a single byte in a block, then that's going to result in a full block write.
Given that people who use their SSDs for compilations have said they can wear them out in under a year with older generation disks that supported many more write cycles, a crappy application could easily wipe out the next generation of SSDs in a few months by continually writing to the idsk.
This is what I thought when I bought a Mac, not long ago. My initial impression was that this overpowered laptop was running a lot slower than it should. I don't know what OSX does under the hood, but goddamn that thing was slow. Then I threw one of those hybrid drives at it, with the 4GB of SSD cache, and now it feels "normal". Maybe it's because I'm spoiled by the truly ridiculous SSDs in my PC, or maybe Mac users are accustomed to things being a bit laggy, but to me it screamed of excess background I/O.
It does cut both ways though. An SSD can hide excessive seeking, but it can also underline scalability issues. I have one particular tool that fails to maximize the SSD's throughput, which is quite shameful considering its a video file (de)muxer. It peaks at about 60mb/sec, regardless of the I/O subsystem - whether it's a spinning disk, a Velodrive, or a freaking ramdisk. It is neither CPU nor I/O bound, but there's something fishy in the loop that causes it to idle a lot. For all I know, the guy may have inserted a sleep() in there for some random reason. And no, I haven't found the time to look at the code yet.
I see the SSD as one tool in the arsenal. It has its pros and cons, and is not a magic "solve everything" device. It certainly cannot entirely make up for developer ignorance.
-Billco, Fnarg.com
A lot of the tablets, etc. are coming out with eMMC type flash instead of raw flash for internal nonvolatile memory. How come?
I would think eMMC would be more expensive (has built-in controller) than raw flash chips. And slower, too, because eMMC has no concept of file-systems and therefore cannot do optimal space selection or wear-levelling. I'm sure the teeny, tiny controller in the eMMC does the best that it can, but I'm also sure that JFFS2 and YAFFS manage flash chips a lot better. The only savings I see are is that the device manufacturer has to layout and route a fewer traces on a circuit board when using eMMC.
Does anyone really know why eMMC is being used?
Care to back up your claim? I'll understand if you haven't used Java since 1.2, but that's hardly relevant today.
Can't you just turn off the swap file? That's what I do. It speeds up application switching remarkably.
Visit the
There are some of us who are quite proficient with assembly language. We also had some very sloppy compilers back then, so the two went hand-in-hand.
Back then, I would build a first prototype in straight C (or whatever), then identify the bottlenecks and rewrite those functions in assembly. Heck, in school I wrote a few QBasic games/apps that linked in some assembly calls. Sometimes I'd get cocky and copy the assembled code directly into a QBasic variable, then execute it. For common stuff like blits and mouse calls, I could type those opcodes from memory. You wouldn't think a QB game could handle 3D graphics as 320x200 on a 386, with sound effects and digital (MOD) music, but with a modest application of hand-tuned code, you can write the script-like glue in whatever language you want with only a minimal impact on final performance.
I'm not saying we need to write all apps in raw assembly, that's absurd. We rarely did that back in the day, except for extreme situations and bragging rights. Today's compilers seem to do a good-enough job, but the faster they get, the more our so-called developers push into truly wasteful practices like nested script interpreters - most PHP and Ruby frameworks fall into that category. Do we really need 16-core machines with 48gb of Ram to push a few pages of text ? Not if we were writing actual computer code, and not this navel-gazing techno poetry that's more for humans than machines.
-Billco, Fnarg.com
Not exactly. The older SSDs didn't do write leveling. Also, most OSs don't force a write to disk when a single byte in a sector changes (perhaps it does on linux, I don't know). Most SSDs also have write caching today so even if the OS was silly enough to request a write to disk, it would quickly get invalidated by the next request to write to the same sector before it even hit the flash portion of the SSD.
Lastly, even if you disregard all of that, then you also must realize that you don't need to do an erase if all the changes you are making are turning bits on. In that case, you just do a write instead of erase and write, and that doesn't wear out the SSD at all (I believe).
Also, there is nothing keeping the SSD from periodically moving data with low write counts to the high write count portions of the disk in the background in hopes that the semi-static data will remain semi-static.
That's what I did. I still have to turn it on for some apps though. ScanDisk crashes without it and Spider-Man: WoS wouldn't run.
"When information is power, privacy is freedom" - Jah-Wren Ryel
and their bandwidth in read/writes are at least 2x as fast, and can be up to 4x or 5x as fast.
My 4TB 6 drive RAID array was like $500 and I get over 700MB/sec transfer rates.
Well, that's the problem, isn't it? Lazy programmers aren't writing efficient code, they're just relying on Moore's Law to push them through. Of course, I don't think the average consumers understand much about efficiency, seeing as eyecandy is so popular, even a selling point.
Your comment is either naive or disingenuous. There are plenty of reasons that lead a specific software to do a good job under a specific scenario but do poorly under another which is completely different, and all this without incompetence being a factor. Let me explain.
Consider one of the most basic subjects which is taught right at the start of any programming 101 course: writing data to a file. For that task, a programmer relies on standard interfaces, either de-facto standards such as platform-specific interfaces or those defined in international standards such as POSIX. This means that a programmer tends to not be aware of any specification regarding the file system or even the underlying hardware when developing a routine that dumps data to a file. Basically, what tends to be taught is to open a file, write to it and then close it. This tends to be acceptable in most scenarios, but this is a dangerous thing to do. After all, just because some data is written to a file it doesn't mean the data is immediately written to that file. The underlying platform may rely on IO buffers to be able to run things with a bit more efficiency. This means that even though your call to write() does succeed, and even though your program can successfully read your data back, that data isn't in fact stored in your file system. This means that if your program is killed/crashed or if your computer dies then you risk losing your data and corrupting the file. If this happens, does it mean that the programmer is incompetent?
This problem can be mitigated by flushing the data to a file. Yet, calling flush() doesn't guarantee that every single bit of your data will be successfully stored in your file system. The thing is, this only guarantees that, when flush() returns, the data is flushed. If the system dies while your program is still writing away your data then you quite possibly lose all your data, and no call to flush() can save you from that. If this happens, does it mean that the programmer is incompetent?
Some clever people took a bit of time to think about this, and came up with some techniques which avoided any the risk of corrupting your data. One of the techniques is to dump the data to temporary files and then, after they succeed in saving the data, the old file is deleted/renamed to a backup file name and the newly created temporary file is renamed back to the original name. With this technique, even if the system dies then the only file which might have been corrupted is the newly created temporary file, while the original file is kept in its original state. With this approach, the programmer guarantees that the user's data is preserved. Yet, this also has the nasty consequence of storing what's essentially the same file in entirely different inodes. This screws with a lot of stuff. For example, it renders hard links useless and screws around with the way versioning file systems work. If this happens, does it mean that the programmer is incompetent?
So, no. This hasn't anything to do with what you arrogantly referred to as "lazy programmers" or even incompetence. Times change, technical requirements change, hardware requirements change, systems change.... And you expect that the software someone designed a couple of years ago will run flawlessly and avoid each and every issue which are only being discovered today and might only be discovered tomorrow. How can programmers avoid these issues, if they don't even have a working crystal ball? This isn't realistic, and you can only make such claims by being completely clueless and out of touch with reality. So, please tone down your arrogance and spend a moment thinking about this issue.
Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
If you have 12GB in your PC, and you're using it normally, you can disable swap entirely. Sure, your commit rate will jump a bit, but you still have several times more Ram than you need. Swap space has a usefulness even when you have memory available, because a properly tuned VMM will treat it as low-priority commit fodder - meaning if an app requests 10 gigs of buffer space, but has not yet put anything in there, the VMM will earmark swap first, so as to not tie up physical RAM until it is actually needed (if at all). In a sense, it's an accounting trick that allows the OS to "borrow" memory without necessarily using it. It's like a line of credit for memory; you're best to avoid using it, but if you need a security deposit for something, that mastercard is ideal. Swap is like that mastercard. It can help swing you through tight spots, but if you abuse it, you enter a world of pain...
-Billco, Fnarg.com
Disable the pagefile entirely then. A gaming machine doesn't need it. Heck, it doesn't need 16gb of RAM either. 6 or 8 would be more than enough.
-Billco, Fnarg.com
No, we haven't.
Anyone pairing a C2D with less than a gig of Ram should be tarred, feathered, then chucked into a wood chipper. I haven't built a desktop with less than 2 gb of Ram in at least 6-7 years - and I don't mean my own, I'm talking about PCs I've built for non-techy friends and family.
-Billco, Fnarg.com
I did disable swap entirely, but a few apps can't run without it, such as ScanDisk which will just fill the RAM and crash.
"When information is power, privacy is freedom" - Jah-Wren Ryel
Yeah, Java 1.2 ran like crap on my 133 MHz 5x68 with 16 MB of RAM in 1998, but today's Java isn't too bad on my dual Six Core CPUs with 32 GB of RAM.
Just turn off swap if you've got that much. Once I went to 16GB on my workstation I turned it off and haven't had a problem yet. (And its not like you won't figure out quickly if you are running into issues).
The tradeoff between development cost and hardware requirements
This is exactly why I like free software. If you're writing code as a hobby then you take pride in your work and release the best version you can conceive of, and only when it's ready. If you're selling it, then everything is a tradeoff designed to maximize profit. Or at least that's my theory. In reality, a lot of free software developers are commercial software developers by day and their "bad" habits carry over, especially with less interesting parts of the codebase. And there are commercial software developers who legitimately take pride in their work and aren't so focused on maximizing profit, but they're a rarity in this day and age.
It's not though, because were that software properly written in the first place, we would already be at the 1 second swap on the "old" hardware, and the SSD would make it 1/10th of a second. If all these dramatic improvements in hardware performance are met with equal regressions in the software, then why the heck are we upgrading in the first place ?
Does Firefox need 10 seconds and 400mb of Ram just to launch ? Yes, it does, but according to the functionality it provides, this should be possible with less than 1/10th of the resources, and no, it wouldn't require writing everything in assembly language. It wouldn't require ANY assembly, just a modicum of sanity and restraint from the developers. The OS, which provides all the services Firefox consumes, uses less memory than that. It's not working with massive data sets, I certainly don't have 400mb of text and images loaded in the one tab, so where the heck is all that excess being used ?
-Billco, Fnarg.com
With a decent amount of write cache this is not a problem. You can force this with a pathological worst-case utility, but in the real world this is not how it works.
Help stamp out iliturcy.
1) Do you still use assembler as often as you did back then?
2) If not, is it because you weren't "lazy" then but now are?
Even though it sounds like "market speak," there are lots of hard problems out their that require efficient code skill (DNA sequencing/analysis, anyone?). Your efficient coding will just shine that much more now.
Sdelat' Ameriku velikoy Snova!
Agreed. It is even more frustrating when you know how little effort would be required to drastically improve performance in many of these apps.
There's one app I love to pick on, because it is legendary in its inefficiencies, and that is Cubase - the multitrack audio production tool. Just to launch it on this $10k PC takes about 15 seconds, because it looks through a few directories for a number of plugins, does god-knows-what with each of them, and eventually presents a blank workspace for me to actually start working. It doesn't actually enable any of the plugins at launch, and each one still takes a second or two to load when you select it. Is it querying for the plugin's name, version and other metadata ? That shouldn't take 2 million CPU cycles per file... Is it preloading them all to speed things up later ? No, because the app still pauses and the audio stutters when you load a new effect or instrument. So what the fuck is it doing that takes so long to launch the host app ? It's doing bullshit, that's what.
I say this as a programmer who was writing assembly back in the day, and have written audio apps and plugins and plug-hosts. Cubase just wastes CPU time and memory doing nothing of value, as do most modern apps. Why ? Because today's developers don't give a crap. Their bosses don't give them the time or resources to do things right. Their workstations probably suck and take too long per build/test/debug iteration. And maybe, just maybe, the developers themselves don't know what their doing, thanks to the many colleges cranking out useless degrees and the industry-wide abomination that is Java, teaching people to write prose rather than code.
-Billco, Fnarg.com
Yup, and the throughput you talk about applies only to streaming (i.e. large, contiguous) reads and writes. You get a sucky 100 IOPS out of that array (assuming it's a 6 x 1TB in a RAID-6 or similar construction). That means your throughput drops to under 10MB/s when doing random reads or writes.
Compare that to even a mid-grade SSD: 40,000+ IOPS read, and 4,000 IOPS write. Sure, a SSD isn't really any faster on sequential read/write, but it blows the doors off of any HD + RAID configuration for random I/O. And, guess what - the vast majority of your workload is random I/O. Practically the only sequential I/O you'll do is read a movie file for playing (or writing it during ripping). Virtually everything else for a desktop is going to be random I/O.
Average access time (stroke+seek) on an HD is about 10-15 milliseconds. It's 10-15 nanoseconds in an SSD. That's 1,000 times faster.
If it's a one-off, and the upgrade route actually does only cost $50 for more memory, yeah, sure, add the Ram. The problem with the Wilhelm anecdote is that nobody sane would have overlooked that simple detail, unless it's one really stupid dead-dumb-and-blind company.
If your software is being deployed to thousands of machines, which would each require an upgrade, you'd better optimize the crap out of it.
If your software is being deployed to a group of servers, where an 8% reduction in CPU and memory usage saves you from adding another $15k node and possibly other infrastructure upgrades, you should spend up to $30k in man-hours optimizing that thing. Scalability today avoids a lot of headaches tomorrow.
-Billco, Fnarg.com
I'm not sure that these "large files" prove what you think it does. Then again, I'm not entirely confident that the opposite is true, either. Even if it doesn't prove what you think it does, I think your point still largely stands.
Let's say I have a 32G SSD device. If I put some movies on here, I'm left with, say, 16G, of "active" disk space usage. If I then go and use what's left very actively, the write endurance for that section falls given the same usage patterns. For example, at 100GB/day erase/write cycles, I've cut it down to ~43 years. If I can interleave the deletion/replacement of the movies into the mix, then I should trend back up to around 85 years, but I don't think that the life span will be extended beyond that, again, assuming constant usage.
Where your point largely still stands is how much less than 100GB/day a consumer will use their disk. By storing 16G of movies/music and only going through 50GB of erase/write cycles, we get back up to 85 years. And both of these numbers are still way too high for consumer usage - 3GB/day might be stretching it as an average for consumers.
Don't worry about "active" data and "mostly read-only" data on your SSD. That is not how SSDs work. Modern SSDs will perform wear-leveling across their entire internal flash memory. That includes across partitions, both primary and extended. You didn't think your SSD actually knew about all the different file systems and all the different partitioning schemes, did you? SSDs do not even know which space on the drive your operating system considers empty or full unless they are told via TRIM command.
By the way when you see a computer game demo these days, do you think "These guys are on crack if they think everyone's got one of those cards?", or "With these recommended specs what is this written in, VisualBasic?" ?
Sometimes, yes. There's one game in particular, that I play a fair bit. It has roughly Xbox (1) era graphics, yet manages to stutter on my balls-to-the-wall quad-SLI GTX 295 system. Even just one of those GPUs should be able to run the stupid game at 300 fps, but the engine is such a mess that it somehow wastes all that time doing nothing useful. I'm also going to mention that the entire game is only 2.5 gigabytes, yet takes about a minute to load one level. With my absurd hardware, I can copy the entire folder in about 5 seconds... So yes, this thing is an insult to Visual Basic. I could write this game in Perl and it would still run ten times faster.
-Billco, Fnarg.com
Care to back up your claim? I'll understand if you haven't used Java since 1.2, but that's hardly relevant today.
Ummm, isn't that exactly what he was claiming?
No sig today...
Writing inefficient bloated code more often than not has nothing to do with being lazy. It frequently has to do with looking at the big picture. Spending $100k in developer time to optimize code that could run unoptimized on $100 worth of extra hardware isn't being industrious. It is wasting resources.
There are plenty of places that optimization makes sense, but more often than not, ease of future maintenance should be much higher on the list of priorities.
In light of the grandparent, my questions for you are:
1) Do you still use assembler as often as you did back then?
2) If not, is it because you weren't "lazy" then but now are?
No, it's because I write much larger programs.
The amount of time/effort needed to write assembly language programs grows exponentially as they grow larger. It's simply not worth it to gain a few percent of speed compared to a good compiler.
Much better to learn to disassemble critical code every now and again and learn what makes your compiler happy.
No sig today...
I'm not saying we need to write all apps in raw assembly, that's absurd. We rarely did that back in the day, except for extreme situations and bragging rights.
Speak for yourself.
I started out writing programs in hexadecimal. Assembly language simply wasn't practical on the machines I was using.
Then we got floppy disks...but I still did another four or five years of assembly language programming before I ever saw a compiler.
No sig today...
Don't say sorry. Your right. Spending $100k on code optimization to avoid spending an extra $100 on hardware makes no sense at all. Code optimization makes sense if $1000 worth of development time will save $10000 in new hardware, sure. But using the sky rocketing of hardware speed and plummeting of hardware prices to avoid large amounts of development cost is certainly a valid path.
5 million cycles? modern nand chips have 3000-5000 cycles, so by those calculations, overwriting the disc 3 times a day = 2.7 - 4.5 years
How do you know those are bad applications? Is optimizing for rotational media really the measure of a well-written program? What about programs that run well on spinning disks, but destroy SSDs? What about when SSDs are our primary storage medium, or arrays of squid with eidetic memories and pizeoelectric tentacles? Should every program be optimized for rotational media, SSDs, and EMPTS? Or is rotational media the end-all-be-all of a program's optimal storage environment?
<xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
That was sort of what I was getting at with the large files. If you only use half your disk regularly and the rest is reserved for lots of ~1GB files, you can always move around those files to expose some more long lasting disk space.
So does iOS and so does most browsers. Usually the main offenders are application software developers and not system software developers.
GENERATION 25: The first time you see this, copy it into your sig on any forum and add 1 to the generation.
I believe both writing a erasing a cell in flash degrades it. Its caused by the charge jumping over the insulated gate of the transistor, each time that happens the glass thats forms the insulation breaks down a bit. smaller transistors have less insulation to break down, so fewer write cycles. I guess the Hi-K/metal gates are more robust
Firefox instance with one or two tabs open
FTFY
Gotta disagree.
Yes, software needs to be TESTED on typical hardware configurations and, if necessary, tuned to run efficiently on those configurations.
That does not mean that software must be DEVELOPED on typical hardware configurations. The act of developing software is NOT typical use of typical hardware. A bleeding edge hardware configuration for me as a developer more than pays for itself well within the lifetime of that hardware configuration. For example, on my current project, I figure my third 22 inch monitor paid for itself in 6 months. Three monitors is definitely not a typical hardware configuration for most computer users. But I expect it will pay for itself 5 times over during it's lifetime. Sounds like a good investment to me.
For as much as anecdote != data, I took a recent (installed it Thanksgiving 2010) OCZ MLC SSD (30G) SSD, and gave it a database workload wherein a commit was made every 5 seconds. Wore it out in a year. Replaced it in August.
/. doesn't hate on it)
Relevant SMART data (cleaned up so
205 Max_PE_Count_Spec 0x0000 - - - Old_age Offline - 10000
206 Min_Erase_Count 0x0000 - - - Old_age Offline - 8948
207 Max_Erase_Count 0x0000 - - - Old_age Offline - 9930
208 Average_Erase_Count 0x0000 - - - Old_age Offline - 9655
209 Remaining_Lifetime_Perc 0x0000 - - - Old_age Offline - 4
You can't tell me it can't be done with modern SSDs. It merely isn't the case for MOST consumers. But when has Slashdot been made up of MOST consumers?
Lazy programmers aren't writing efficient code, they're just relying on Moore's Law to push them through.
Wrong.
It's not about lazy programmers, it's all about calculating managers.
To cite one of my managers during a project review:
Next time you're not going to perfect our code like you did on this project. If we measure software quality on an A to F scale, and if our client is satisfied with quality level C, then stop improving your code once you hit that C level. Going for the A will only increase project cost, but not our revenues..
Except with SSD write lifetimes falling with every generation
Except this isnt true. Flash lifetimes are dropping due to process shrinks, but SSD lifetimes are remaining steady due to increasing capacity made possible by those process shrinks.
This is the problem with you SSD critics. You get that one nugget of information and then gleefully go on spitting bullshit at everyone on forums like this one. To be quite clear, YOU DO NOT KNOW WHAT YOU ARE TALKING ABOUT.
Why do you volunteer to talk about a subject that we both know that you are poorly informed about? You dont see me talking about JAVA performance because... guess what... even though I know a couple things about JAVA, I refuse to make declarative statements about topics where I know that I only know a couple of things about.
If you are an expert in something... wait for that topic before you act like an expert.
"His name was James Damore."
Yeah, I guess it is pretty naive. I'm just tired of new versions of software running slower and slower on my older hardware. (Web browsers especially. And operating systems.)
Do you still use assembler as often as you did back then?
There are still people coding video games for 8- and 16-bit platforms that don't lend themselves well to the abstractions of C. These platforms include retro consoles, Chinese SoCs, and Chinese SoCs compatible with retro consoles.
It does not hurt the bottom line if a customer has to wait 1.5 seconds for program to launch or 3.
What does hurt the bottom line is device makers who reject a slow-launching application from the device's official application repository because the repo curator feels slow-launching applications reflect poorly on the platform. In such a case, an application developer has to at least put up a splash screen while the program is launching.
"eye candy" can be quite efficient. Unless you like your video card sitting there, doing nothing, being /efficient/ (rolls eyes)
A line like "System requirements: Intel integrated graphics not supported" means lost sales unless an application is such a killer app that people will buy a new laptop just to get AMD or NV graphics.
Spending $100k in developer time to optimize code that could run unoptimized on $100 worth of extra hardware isn't being industrious. It is wasting resources.
Not if at least 1,000 copies of the software will be sold.
if our client is satisfied with quality level C, then stop improving your code once you hit that C level.
Comeback: "We have another possible client that wants B." Or "We have a competitor offering B."
(Not that B, or that /b/ either.)
While we're at it, let's not make safer cars, because then people will take more risks driving them.
That argument has been placed countless times. It's complete rubbish.
>>[...] been getting faster on the same hardware
>So does iOS [...]
My iPhone 3G running iOS4 disagree.
I thought ScanDisk was in Windows 95, Windows 98, and Windows Me, and it was replaced with CHKDSK (for Windows NT) in Windows XP.
I occasionally do use assembly, but not for the entire program. I just apply it sparingly where it yields the greatest benefits. Most C compilers have gotten quite good at automatic optimization, but there are some scenarios where a bit of hand-tuning still helps.
I kind of got into a pro-assembly rant there, but what I meant to say is that assembly was a tool, to be used where appropriate. The only times I wrote software in pure assembly were when I had nothing but DEBUG.COM, or if I was participating in a 256 or 4096-byte competition (for kicks). Today, we write lots of software using scripting languages and bloated frameworks, so the proper approach now might be to rewrite the most-used functions as C code and link that in as an external plugin. Just look at Facebook, they have that HipHop tool that translates PHP to C++ and compiles it. I think that's a perfectly valid approach, as it lets the developer continue using the relatively easy PHP (with some restrictions), then turns it into native x64 code that can really scream. Any time you can avoid an interpreter, you'll see significant performance leaps.
My point is we should be using all this computing power to help us write better software more quickly, by making use of code generators and optimizing compilers. The manufacturing industry makes extensive use of robotics, where one tool helps to create the next progressive iteration of that tool. We should apply that same methodology to software. Use current tools to make the next generation of tools better/faster/easier.
-Billco, Fnarg.com
CDs, DVDs, and BDs need even more such contortion. And until high-speed Internet reaches rural areas of the United States, distributing really big applications on optical disc isn't going anywhere soon..
Warning: some applications (such as the Java VM) more or less depend on the swap to be present; unused memory can be swapped away, leaving you more memory for other applications. Futhermore, on many OS platforms, you need at least the amount of swap as the amount of RAM to be able to hibernate your computer.
What game is that?
Close... A laptop from around 2004 with a Pentium M and 256MB RAM.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
It doesn't help that Windows uses swap regardless of how much RAM is free
Right, I wasn't really referring to the use of swap that you are experiencing - I was mostly talking about when a process gets out of control <cough>Firefox <cough> and the OS starts swapping like mad.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
Didn't Intel exit the flash market by spinning off its flash division Numonyx, which later got acquired by Micron? So how is it still unveiling NAND chips? Anyway, looks like such a chip could be a good data storage flash in smart phones.
Your iPhone 3G runs on a 400 MHz processor and came out before the T-mobile G1- the first Android phone.
Jesus you people are old. Kudos.
I refuse to make declarative statements about topics where I know that I only know a couple of things about.
I only can wish that people commenting on politics or the economy (or almost anything) would follow this rule.
-- I have a private email server in my basement.
Kind of like Bethesda.
That and not everyone can afford hot rods.
Indeed, as Carmack said in an interview once, more important than computer hours these days are programmer hours. He's rather use super high-powered CPUs rather than fiddle around with less costly GPGPU implementations simply because of developer time constraints.
Then we'd have very little discussionat all. ;)
There is an upside to less knowledgeable people discussing, and that's that it becomes a sort of brainstorming, as those in the know tend to think along similar lines (even when they have differing opinions) while those who don't know often come with orthogonal ideas that the knowledgeable can convert into new constructive ideas (though admittedly that's pretty damn rare).
Some clever people took a bit of time to think about this, and came up with some techniques which avoided any the risk of corrupting your data. One of the techniques is to dump the data to temporary files and then, after they succeed in saving the data, the old file is deleted/renamed to a backup file name and the newly created temporary file is renamed back to the original name. With this technique, even if the system dies then the only file which might have been corrupted is the newly created temporary file, while the original file is kept in its original state. With this approach, the programmer guarantees that the user's data is preserved.
Actually, you don't - this is what caused massive data corruption under the development of ext4. Write to temp file, rename over, crash, boom 0 byte file. There's no guarantee in POSIX that the data is written before the rename happens, even though this is a common technique and broke hundreds of applications. The "solution" was to call flush() before every rename(), which would put your application on hold until the file system returns every time. Eventually they realized everyone wasn't going to fix their application and implemented ordered mode like ext3 - if you rename it, the data is flushed before the rename. But that's not required behavior.
Live today, because you never know what tomorrow brings
Yes, you get the same number of writes if you buy a much bigger disk. But if you have a fixed need like "I need 128GB for my OS disk, I'm just waiting for the price to come down" then you get lower prices - and lower write cycles. If I'm buying one 3TB disk instead of 3x1TB disks, it's very likely that 3TB disk will see 3x the data traffic that a 1 TB disk would. You are the idiot that keeps ignoring that.
Live today, because you never know what tomorrow brings
That's strange. I went to Google and tried chkdsk crash without page file and chkdsk crash without swap file, and it doesn't appear that others are having the same problem that you're having.
And $100 worth of extra hardware times 100,000 users = what now. . ?
But then, if driving hardware sales is part of the goal, then everybody is happy, right?
Personally, I feel that kind of logic falls into a similar category as that which leads to airlines using cost/benefit analysis to justify the use of dangerously faulty equipment. You know? Where lawsuits cost less than hardware overhaul.
Employing elegance and skill in how we use our tools will always result in superior minds when compared to lazy people who prefer to not think any more than they absolutely must in order to get by.
And you totally missed the GPs argument. GP never claimed that writing assembly isn't awesome, simply that it is almost never cost effective today. Specifically, it's pointless to complain when enterprise applications are not optimized, because it's not a simple trade off.
There's no programmer sitting at his desk saying to himself, "should I make this code rock solid, or would it be better if I released a half-baked piece of garbage". Instead, there's a project team somewhere saying to themselves, "we can sell this half-baked piece of garbage today for $X, or we can work really hard on it for the next two years and sell it for $X * 1.2. Of course, that's assuming our competitors don't release their own version in the meantime, in which case we won't be able to sell it at all..."
The reality is that optimizing and aggressively testing code costs both time and money, and in many cases it's not worth doing. Here's an example. Skyrim just came out, and Bethesda is notorious for releasing buggy games. People will buy the game for $60 and then complain about how buggy it is, knowing in advance that it will be buggy. Now, ask those people would they rather get it as is for $60, or would they rather wait another 18 months for the bugs to be (almost) all fixed, and pay $90 for it. That is all.
It's the price you pay for newer versions of things. You want a browser that does a nice job of running HTML5, and a fair job at security, and you probably are used to not even paying for it. We already get so much, that to then complain because FireFox8 is slower on older hardware is a real pity. The fact is, no market exists for modern web browsers which are tuned to run on a 486. The cost would look exorbitant (say $100), and even if you produced such a browser, web pages use so much flash or video today that it still probably couldn't run ESPN.com.
Considering the hardware you can purchase for $500, it's really not worth anyone's time (at least in the first world) to focus on supporting old hardware. At least for things we want done. If you are playing with old hardware as a hobby, then it's a different but irrelevant story.
And do you see no problem when you read that post and your previous one again?
Rethinking email
maybe words "lazy" and "incompetent" are not 100% correct in that aspect but breaking standards and piling up mountains of workarounds for every single issue isn't something that i would call "a job well done" either.
your entire example is like that: each "step" introducing more problems than it "fixes" because it's not fixing anything really. only breaking expected behaviour more for a nasty surprise. should you expect such issues arise in future because of that ? hell yeah!
it would be better in a long run not too pretend to be smarter than the users of your software or the creators of environment (OS/hardware) your software expected to be run in and let them fix/identify underlaying problems properly (like fatal error/wrong behaviour/etc. and power failure/hardware meltdown/etc. in your example).
so, please, don't pretend that this have nothing to do with improper programmer work. be it by the fault of programmers themselves, management or influence of some outside trend, order of things similar to your example is not OK pattern to follow.
and if it is OK for you to leap from standard approaches to "anything goes" as part of your "normal" workflow just because technical, hardware and target systems "requirements change" [or because life is generally hard and doing job is generally tough], maybe word "incompetent", which you yourself have introduced into this thread, is not that out of place after all...
and your own advice goes both ways.
who dares wins
Games are a different bubble, because gamers tend to be all bark and no bite. We complain but still throw money at the diseased companies because we want our fix. We're basically software crackheads.
In the application space, things are a bit different. Take a company like Adobe, whose widely-distributed software is notorious for being slow and unstable. Hardly a week goes by without a designer bitching that Photoshop runs like a dog on his brand new machine. If someone were to come along and release a compatible, feature-complete product that runs twice as fast on half as much memory, it would KILL!
I've seen this first-hand as I watched Corel spiral down into obsolescence. They had the superior word processor for the longest time, but as they kept adding obscure functionality and remodeling the dumb thing with more and more interpreted / indirect code with each successive release, it grew increasingly sluggish and troublesome. MS Word took the lead because it was lean and mean, despite costing twice as much. Had they fired that idiot manager Richard, who kept pushing for these pointless rewrites, and instead focused on polishing what was already there, I dare say the office suite marketshare might be drastically different today. For a 1.0 release, sure, the unoptimized crap is good enough, but for 2.0 it would be nice if some of the development time were spend on improving what was already there, rather than adding more crap.
Business users don't always need more, sometimes they just want the features they already have to work better.
-Billco, Fnarg.com