This was circa the summer of '97. I bought a 110 baud Tandy modem at a swap meet. It did not use the Hayes AT command and the UART had a two byte buffer. You needed to get the next byte out before the modem transmitted the prior byte. There were some toggle switches, one would answer the other would treat a pin as GPIO to a relay and that is how you pulse dialed. In fact in the beginning I simply flipped a toggle, dialed a number, waited for an answer, flipped a toggle, and put the handset down. Before the summer break I got a good start on an ANSI emulator for my HP48S, but it just was not able to keep-up due to occasional garbage collection (it was only partially Saturn ml since I used the gcc port and called some HP library stuff that was not implemented in ML). That summer I wrote a terminal emulator for my CoCoII and Apple IIc and used that modem to dial into the modem pool at the University and then used mm to read and write emails. I shortly got an email like, "WTF? When you connect at that speed you use the really old hot modems in the modem pool. Could you please connect at a higher speed since we want to retire those." So I used a Tandy 1000XL for a bit with a 1200 baud modem. Then there was an email sent to everyone using the modem pool that the old modems were going to be retired in two months and the lowest speed was going to be 9600 baud. The fastest modem at home at the time was 2400 baud. I got lucky though and scrounged-up a 14.4 pcmcia fax/modem (plus a 10mbit ethernet hub) at the next swap meet when I traded in all of my old 2.5 mbit coax ethernet gear from home.
There is another reason for parity on chip, the parity of AB is the same as the parity of A + parity of B, while ECC is inherently serial per each block. That way each parity check can easily be 4, 8, or 16 times faster than an ECC check. Sun always went the extra mile to make their caches a bit faster than the competition. Sun had a history of making I$ and D$ and tag comparison on E$ with only 0 or 1 cycle penalty.
Sure enough it is in the Phenom datasheet, thank you.
As far as I know T1, T2, and T2+ all have only parity for the I$ and D$. All the Fujitsu sparcs that I know of only have parity for I$ and D$ as well. ECC e-cache is the norm though.
Sparc was odd. They had all sorts of strange caches from one model to the next. Sometimes there was an I$ and D$, sometimes it was unified. Sometimes some caches were virtually tagged. There was an ultrasparc that had the e-cache data ECC protected and the tags were on chip and only had parity checking. Also there were bad modules with flakey E$ at one point. Sun provided customers that had problems that the enhanced RAS in Solaris 9 did not solve with replacement modules with mirrored SRAM for the e-cache.
I hate to reply to myself, but I did some googling and I cannot verify that AMD K10 has ECC L1 cache. I am almost 100% certain I read that is a reliable place like an AMD white paper some time ago though. I hope someone can clear this up for me.
So basically Superdome is not in the top spot (even not the top not clustered spot) for anything until you get to 30TB, where it is the ONLY entry. Now true I will give you that it was a unisys ms sql box that topped at 3TB that no one would really buy (and it does not do much in the realm of QphH), but that was a Xeon box, as were the top few in every other category always Xeon or Opteron, no Itanium. In fact pretty much everywhere below 3TB there were even Xeon and Opteron boxes with better Price/QphH and QphH than HP Superdome. (You do get some other oddballs that no one would really buy though too.)
I think it does show that HP Itanium is very expensive unless you need to push upwards of 200K QphH on insane data sizes in a single box. There are other systems that can do more QphH far cheaper as long as you limit yourself to 1TB. When you look at simply QphH then again the only time that Itanium is on top is the one where it is the sole entry. A power6 beats it in the 3TB category, can push more than 50% more QphH but only costs about 20% more and is running software that people would really use. It is a cluster though.
Not L1 though. As far as I know you cannot yet buy anything from Intel that has better than parity error detection in the L1 cache. AMD just started selling chips that have ECC L1. Actually I just looked and I cannot find a good doc stating that AMD K10 has ECC L1 cache, but I am almost 100% certain I read it. In any case I know you can buy stuff from Sun that has sparcs that have ECC for the register file yet only parity error detection for the L1 cache.
MCA is basically a buzzword for a bunch of RAS features. AMD has most of the same that Intel have in x86. (Itanium does have some wild stuff that will most likely not be in Nehalem though, like the TLB verification.) Some of the details are different in AMD vs Intel though and an OS needs to know about that. One exciting thing is that AMD has just started making chips with ECC L1 caches while as far as I know Intel still have only parity detection in the L1 cache. Also some AMD cpus have hardware memory scrubbers (3) while with Intel you need a hefty chipset to do that automatically (again I hope that is not dated info).
I don't know about x86 being slow. There is some Power that is very fast at single thread int and fp, but man is it power hungry, hot, and expensive. But really for many workloads x86 is plenty fast and priced much more competitively. Certainly x86 is faster than all sparc, mips (dead), ppc (dead), itanium (living dead), and all but the most expensive power chips with regard to single threaded MIPS and FLOPS. Most workloads are IO or memory bound or the throughput of largely independent tasks can scale by adding HW to the cluster, hence cheap fast enough x86 looks very appealing.
The problem is that HP is expensive compared to Sun. Seriously, I know it is hard to believe, but call them up and check for yourself. The reason that HP gets away with this is because they have some people by the balls right now. There were some shops that bit on Itanic when it looked unstoppable with support from MS, SGI, and Compaq/HP. Those shops are in a bind at this point. Then there are the people that were DEC. HP offered some crazy storage paths from that to Itanic that some places bought on to. They are in not a good place now either. So not many Itanium servers get sold per year, but they are crazy expensive. The scale is like this 8 cpu Itanium system with IO channels (PCI/PCIe/PCI-X) in the dozens costs about the same as a 64 cpu system with IO in the hundreds from Sun.
I second this. I have one of the early WRT54G models that predated the less hardware vxworks models. I initially used thiobor and have since then moved to tomato. I have the exact saem experiences as you. I use QoS and torrent in addition to everything else including gaming, ssh, streaming video, CUPS, and typical HTTP/IMAP type stuff for up to five people at home. I have to reset the box maybe twice a year, cheap hardware and linux ain't perfect but darned close I guess.
State of the non-mainframe art with regards to RAS right now is ECC RAM with mirroring, parity cache, ECC e-cache, hashes that detect and fix multiple bit errors for storage end to end, CRC (ethernet) and cksum (TCP, UDP) (but can you trust the nic offloading engine?), instruction retry, and fp scrubbing, in addition to what has been around for the last five years or so.
Read the fmd, fmadm, and fmstat man pages on Solaris. There is also at least one memory scrubber kthread and you can look at memscrub_scans_done to see how far it has gone along. Lots of hardware is being checked periodically, in fact on some hardware even the FP units of the processors are periodically checked for faults. Some sparcs even have instruction retry in the case of a detected error. There is even memory mirroring on M4000 and above servers, that is like RAID-1 for memory, say a chip on a DIMM fails, you still can run, then use fmadm and replace the faulty DIMM. There are also the sorts of things you outlined above where a page is reread if not modified and only causes a SIGSEGV if that page is ever used again. In ZFS there is end to end hashing to detect and correct errors.
Of course all of this pales to what has been available on mainframes for a generation.
Uh... Didn't I write that I would not like to have heard that line in a funeral about my dad? It was nothing about you, just about my own personal feeling uncomfortable if that ever happened to me.
In any cases I really liked the stories you shared about your father, he was a good person for you and your family and I see that you appreciated him very much. I'm glad your father made a worthwhile life for himself.
One more story about about ggp, my uncle always told me, "look but don't touch." Ggp always said, "touch but look-out."
The whole commotion is that temporary files are stored under per user only readable subdirs of/var instead of under ~/Library? I don't know about you but my home dir is mounted from a server. That seems a whole lot more secure (and efficient) to put that in a place more or less guaranteed to be local and not exported. It seems to me some people just have to learn about another place temporary data can appear. Also where it is makes it really easy to just rm -rf all of it when they want to.
Mostly yes, but some no:/etc used to be for everything else. In fact init was in there. To this day rc scripts live under there./sbin used to be for static binaries and that has fallen out of fashion for reasons I never understood.
That's so backwards though. There are some posts here about how amazingly good Solaris is about backwards compatibility. I can confirm that with my experiences as well. That is the right way, to think about backwards compatibility by emphasizing a stable and backwards compat symbols in libraries, sycall numbers, C++ library binary interface,/proc,/dev, args to binaries in/*/*bin and/*bin, and ELF relocation types. Then you can rely on the dynamic linker and versioned dynamic libraries where needed. With this approach you yo don't have the issue of all the old bugs and good luck when the args to tail change in a program that uses system() for it or/proc/foo changes its format.
Also the kernel api has stay very backwards compatible even from the move from SunOS to Solaris. Old kernel modules tend to just continue working though I have run into cases where they did not often due to a bug in the module itself not exposed in an older, slower, or with fewer cpus system.
Here is a specific example. Lots of games will not if there is another program running using Direct3D. Then there are those that will, but not full screen. Then there are some programs that do not have great options menus and only let you use the default sound device. Every now and then the program will then switch when it reinitializes the sound (after missions, when you select a new load, etc). I imaging the person asking the original question wanted two keyboards, two mice, two sound cards, two monitors, and one computer where on one screen would be one game running full screen and the sound going to a pair of headphones and then on another screen a game running full screen with sound to another set of head phones. It's just not something expected and is really not going to work right in practice.
That last sentence, was just not something I would like to hear at a funeral. But I have a similar story.
My great grandfather died when he was 82. At the funeral there was his wife and two girlfriends. The wife did not know about the girlfriends, and neither girlfriend knew of the other. The wife was his second and nearly 30 years his junior. The two girlfriends were more than 30 years his junior. They were all from different cities. The funeral had a few very ugly moments. He had 8 legitimate children with his first wife, some bastards showed-up later.
The last moment of mine seeing him alive was of him running and chasing a bus down, then getting in. The first time he came to visit the US he believed all the Soviet propaganda. He brought 10 kilos of meats. They caught him. We were waiting wondering why he had not come-out yet. He spoke no English, closed his suitcase, sat down on it, and ate it all of it that was smoked in that spot and did not get arrested/sent-back somehow.
08 June 1984: Ghost Busters PG 01 July 1984: MPAA PG-13 introduced 16 June 1989: Ghost Busters II PG
Do you see now why the sequel was more silly, lacking the creepy, and end-up just not funny?
Also as another commentator mentioned below, look to Blues Brothers 2000 and Dan Aykroyd to see why Bill Murray has been such a long time hold-out. Do you want a 2010 filmed in 2010?
That's kind of a good idea in principle but it ended-up being more trouble than it was worth for me. So I got a P4 box with AGP and room for 2 GB of RAM for $50. I thought all was going to be well. The first thing was that the PS/2 ports did not work, so I scrounged-up some USB input. Then when I opened it up there was the back of the power supply too close to the AGP connector so I could not find any decent AGP card short enough to fit. I got some extra ram and it became the web browsing computer. It's using integrated graphics.
Then I got another one with a bigger case for $100. I got an AGP card (I think it was a 6600, it was whatever was the last best available chipset for AGP from eVGA). It turned-out that the PSU was garbage so I needed to get a new one but since the P4 is so hungry and the AGP card relatively so, that meant I needed a pretty heavy duty power supply. I get it working, cool. Okay it only has 512MB of by today's standards pretty slow memory, a small HD, and a CD-ROM drive (not DVD reader, not even CD writer, in fact it could not even read CDRs!). Okay so I upgrade all that. And then it just is not all that great in the end for games anyway. I gave it away to some family.
I ended-up making a beefy new 4 core AMD64 box with PCIe for $750 (yes including retail Vista, yes I was too late due to my penny pinching) and even threw in two tuners, a penny saved a dollar lost I guess.
Note though that that's only ubuntu that backported that into 5.1p1 not OpenSSH itself. Also it only implements one of the countermeasures. 5.2 also has the server prefer AES counter (instead of cbc) and arcfour256 before any CBC mode.
This was circa the summer of '97. I bought a 110 baud Tandy modem at a swap meet. It did not use the Hayes AT command and the UART had a two byte buffer. You needed to get the next byte out before the modem transmitted the prior byte. There were some toggle switches, one would answer the other would treat a pin as GPIO to a relay and that is how you pulse dialed. In fact in the beginning I simply flipped a toggle, dialed a number, waited for an answer, flipped a toggle, and put the handset down. Before the summer break I got a good start on an ANSI emulator for my HP48S, but it just was not able to keep-up due to occasional garbage collection (it was only partially Saturn ml since I used the gcc port and called some HP library stuff that was not implemented in ML). That summer I wrote a terminal emulator for my CoCoII and Apple IIc and used that modem to dial into the modem pool at the University and then used mm to read and write emails. I shortly got an email like, "WTF? When you connect at that speed you use the really old hot modems in the modem pool. Could you please connect at a higher speed since we want to retire those." So I used a Tandy 1000XL for a bit with a 1200 baud modem. Then there was an email sent to everyone using the modem pool that the old modems were going to be retired in two months and the lowest speed was going to be 9600 baud. The fastest modem at home at the time was 2400 baud. I got lucky though and scrounged-up a 14.4 pcmcia fax/modem (plus a 10mbit ethernet hub) at the next swap meet when I traded in all of my old 2.5 mbit coax ethernet gear from home.
There is another reason for parity on chip, the parity of AB is the same as the parity of A + parity of B, while ECC is inherently serial per each block. That way each parity check can easily be 4, 8, or 16 times faster than an ECC check. Sun always went the extra mile to make their caches a bit faster than the competition. Sun had a history of making I$ and D$ and tag comparison on E$ with only 0 or 1 cycle penalty.
Sure enough it is in the Phenom datasheet, thank you.
As far as I know T1, T2, and T2+ all have only parity for the I$ and D$. All the Fujitsu sparcs that I know of only have parity for I$ and D$ as well. ECC e-cache is the norm though.
Sparc was odd. They had all sorts of strange caches from one model to the next. Sometimes there was an I$ and D$, sometimes it was unified. Sometimes some caches were virtually tagged. There was an ultrasparc that had the e-cache data ECC protected and the tags were on chip and only had parity checking. Also there were bad modules with flakey E$ at one point. Sun provided customers that had problems that the enhanced RAS in Solaris 9 did not solve with replacement modules with mirrored SRAM for the e-cache.
I hate to reply to myself, but I did some googling and I cannot verify that AMD K10 has ECC L1 cache. I am almost 100% certain I read that is a reliable place like an AMD white paper some time ago though. I hope someone can clear this up for me.
http://www.tpc.org/tpch/results/tpch_price_perf_results.asp
So basically Superdome is not in the top spot (even not the top not clustered spot) for anything until you get to 30TB, where it is the ONLY entry. Now true I will give you that it was a unisys ms sql box that topped at 3TB that no one would really buy (and it does not do much in the realm of QphH), but that was a Xeon box, as were the top few in every other category always Xeon or Opteron, no Itanium. In fact pretty much everywhere below 3TB there were even Xeon and Opteron boxes with better Price/QphH and QphH than HP Superdome. (You do get some other oddballs that no one would really buy though too.)
I think it does show that HP Itanium is very expensive unless you need to push upwards of 200K QphH on insane data sizes in a single box. There are other systems that can do more QphH far cheaper as long as you limit yourself to 1TB. When you look at simply QphH then again the only time that Itanium is on top is the one where it is the sole entry. A power6 beats it in the 3TB category, can push more than 50% more QphH but only costs about 20% more and is running software that people would really use. It is a cluster though.
Not L1 though. As far as I know you cannot yet buy anything from Intel that has better than parity error detection in the L1 cache. AMD just started selling chips that have ECC L1. Actually I just looked and I cannot find a good doc stating that AMD K10 has ECC L1 cache, but I am almost 100% certain I read it. In any case I know you can buy stuff from Sun that has sparcs that have ECC for the register file yet only parity error detection for the L1 cache.
MCA is basically a buzzword for a bunch of RAS features. AMD has most of the same that Intel have in x86. (Itanium does have some wild stuff that will most likely not be in Nehalem though, like the TLB verification.) Some of the details are different in AMD vs Intel though and an OS needs to know about that. One exciting thing is that AMD has just started making chips with ECC L1 caches while as far as I know Intel still have only parity detection in the L1 cache. Also some AMD cpus have hardware memory scrubbers (3) while with Intel you need a hefty chipset to do that automatically (again I hope that is not dated info).
I don't know about x86 being slow. There is some Power that is very fast at single thread int and fp, but man is it power hungry, hot, and expensive. But really for many workloads x86 is plenty fast and priced much more competitively. Certainly x86 is faster than all sparc, mips (dead), ppc (dead), itanium (living dead), and all but the most expensive power chips with regard to single threaded MIPS and FLOPS. Most workloads are IO or memory bound or the throughput of largely independent tasks can scale by adding HW to the cluster, hence cheap fast enough x86 looks very appealing.
The problem is that HP is expensive compared to Sun. Seriously, I know it is hard to believe, but call them up and check for yourself. The reason that HP gets away with this is because they have some people by the balls right now. There were some shops that bit on Itanic when it looked unstoppable with support from MS, SGI, and Compaq/HP. Those shops are in a bind at this point. Then there are the people that were DEC. HP offered some crazy storage paths from that to Itanic that some places bought on to. They are in not a good place now either. So not many Itanium servers get sold per year, but they are crazy expensive. The scale is like this 8 cpu Itanium system with IO channels (PCI/PCIe/PCI-X) in the dozens costs about the same as a 64 cpu system with IO in the hundreds from Sun.
I second this. I have one of the early WRT54G models that predated the less hardware vxworks models. I initially used thiobor and have since then moved to tomato. I have the exact saem experiences as you. I use QoS and torrent in addition to everything else including gaming, ssh, streaming video, CUPS, and typical HTTP/IMAP type stuff for up to five people at home. I have to reset the box maybe twice a year, cheap hardware and linux ain't perfect but darned close I guess.
State of the non-mainframe art with regards to RAS right now is ECC RAM with mirroring, parity cache, ECC e-cache, hashes that detect and fix multiple bit errors for storage end to end, CRC (ethernet) and cksum (TCP, UDP) (but can you trust the nic offloading engine?), instruction retry, and fp scrubbing, in addition to what has been around for the last five years or so.
I forgot, there is even an e-cache scrubber.
Read the fmd, fmadm, and fmstat man pages on Solaris. There is also at least one memory scrubber kthread and you can look at memscrub_scans_done to see how far it has gone along. Lots of hardware is being checked periodically, in fact on some hardware even the FP units of the processors are periodically checked for faults. Some sparcs even have instruction retry in the case of a detected error. There is even memory mirroring on M4000 and above servers, that is like RAID-1 for memory, say a chip on a DIMM fails, you still can run, then use fmadm and replace the faulty DIMM. There are also the sorts of things you outlined above where a page is reread if not modified and only causes a SIGSEGV if that page is ever used again. In ZFS there is end to end hashing to detect and correct errors.
Of course all of this pales to what has been available on mainframes for a generation.
Uh... Didn't I write that I would not like to have heard that line in a funeral about my dad? It was nothing about you, just about my own personal feeling uncomfortable if that ever happened to me.
In any cases I really liked the stories you shared about your father, he was a good person for you and your family and I see that you appreciated him very much. I'm glad your father made a worthwhile life for himself.
One more story about about ggp, my uncle always told me, "look but don't touch." Ggp always said, "touch but look-out."
The whole commotion is that temporary files are stored under per user only readable subdirs of /var instead of under ~/Library? I don't know about you but my home dir is mounted from a server. That seems a whole lot more secure (and efficient) to put that in a place more or less guaranteed to be local and not exported. It seems to me some people just have to learn about another place temporary data can appear. Also where it is makes it really easy to just rm -rf all of it when they want to.
Mostly yes, but some no: /etc used to be for everything else. In fact init was in there. To this day rc scripts live under there. /sbin used to be for static binaries and that has fallen out of fashion for reasons I never understood.
That's so backwards though. There are some posts here about how amazingly good Solaris is about backwards compatibility. I can confirm that with my experiences as well. That is the right way, to think about backwards compatibility by emphasizing a stable and backwards compat symbols in libraries, sycall numbers, C++ library binary interface, /proc, /dev, args to binaries in /*/*bin and /*bin, and ELF relocation types. Then you can rely on the dynamic linker and versioned dynamic libraries where needed. With this approach you yo don't have the issue of all the old bugs and good luck when the args to tail change in a program that uses system() for it or /proc/foo changes its format.
Also the kernel api has stay very backwards compatible even from the move from SunOS to Solaris. Old kernel modules tend to just continue working though I have run into cases where they did not often due to a bug in the module itself not exposed in an older, slower, or with fewer cpus system.
Here is a specific example. Lots of games will not if there is another program running using Direct3D. Then there are those that will, but not full screen. Then there are some programs that do not have great options menus and only let you use the default sound device. Every now and then the program will then switch when it reinitializes the sound (after missions, when you select a new load, etc). I imaging the person asking the original question wanted two keyboards, two mice, two sound cards, two monitors, and one computer where on one screen would be one game running full screen and the sound going to a pair of headphones and then on another screen a game running full screen with sound to another set of head phones. It's just not something expected and is really not going to work right in practice.
That last sentence, was just not something I would like to hear at a funeral. But I have a similar story.
My great grandfather died when he was 82. At the funeral there was his wife and two girlfriends. The wife did not know about the girlfriends, and neither girlfriend knew of the other. The wife was his second and nearly 30 years his junior. The two girlfriends were more than 30 years his junior. They were all from different cities. The funeral had a few very ugly moments. He had 8 legitimate children with his first wife, some bastards showed-up later.
The last moment of mine seeing him alive was of him running and chasing a bus down, then getting in. The first time he came to visit the US he believed all the Soviet propaganda. He brought 10 kilos of meats. They caught him. We were waiting wondering why he had not come-out yet. He spoke no English, closed his suitcase, sat down on it, and ate it all of it that was smoked in that spot and did not get arrested/sent-back somehow.
Oh man, I think I replied to the wrong person, sorry.
08 June 1984: Ghost Busters PG
01 July 1984: MPAA PG-13 introduced
16 June 1989: Ghost Busters II PG
Do you see now why the sequel was more silly, lacking the creepy, and end-up just not funny?
Also as another commentator mentioned below, look to Blues Brothers 2000 and Dan Aykroyd to see why Bill Murray has been such a long time hold-out. Do you want a 2010 filmed in 2010?
That's kind of a good idea in principle but it ended-up being more trouble than it was worth for me. So I got a P4 box with AGP and room for 2 GB of RAM for $50. I thought all was going to be well. The first thing was that the PS/2 ports did not work, so I scrounged-up some USB input. Then when I opened it up there was the back of the power supply too close to the AGP connector so I could not find any decent AGP card short enough to fit. I got some extra ram and it became the web browsing computer. It's using integrated graphics.
Then I got another one with a bigger case for $100. I got an AGP card (I think it was a 6600, it was whatever was the last best available chipset for AGP from eVGA). It turned-out that the PSU was garbage so I needed to get a new one but since the P4 is so hungry and the AGP card relatively so, that meant I needed a pretty heavy duty power supply. I get it working, cool. Okay it only has 512MB of by today's standards pretty slow memory, a small HD, and a CD-ROM drive (not DVD reader, not even CD writer, in fact it could not even read CDRs!). Okay so I upgrade all that. And then it just is not all that great in the end for games anyway. I gave it away to some family.
I ended-up making a beefy new 4 core AMD64 box with PCIe for $750 (yes including retail Vista, yes I was too late due to my penny pinching) and even threw in two tuners, a penny saved a dollar lost I guess.
Oops, I did screw-up on that sorry.
Also indexing was REALLY slow and to backup you needed to take the db offline early on.
Note though that that's only ubuntu that backported that into 5.1p1 not OpenSSH itself. Also it only implements one of the countermeasures. 5.2 also has the server prefer AES counter (instead of cbc) and arcfour256 before any CBC mode.