28 ms·
Best CPUs for Workstations: 2017
- jonbaer 9y ago"Some workstation users will need ECC memory, and up to 512GB of it. When memory has an error rate of 1 error per GB per year, using 512GB ensures almost two bit errors per day: something that a 60-day simulation would find catastrophic."
- theyregreat 9y agoBitsquatting, rowhammer and silent corruption. Basically, ECC should be the universal standard in all network gear, servers and endpoint (user) devices. Not creates an attack surface and opportunity for data-loss. https://cr.yp.to/hardware/ecc.html https://cr.yp.to/hardware/ecc.html
- cbetz 9y agoI had the same thought and am wondering about the economic reality of doing this. Does anyone have an idea of the cost increase for using ECC RAM in a mobile device for instance? Are there also power usage concerns to worry about? AFAIK there are basically zero consumer devices using ECC RAM.
- barrkel 9y agoECC is a market segmentation tool. Keeping ECC away from consumer hardware means you can charge more to make it available for industrial, professional etc. use.
- ericfrederich 9y agoInteresting thought, but kind of sounds like a conspiracy theory. Anything else to back it up?
- skummetmaelk 9y agoObviously ECC requires more resources and is therefore intrinsically more expensive. That does not preclude it from being used for market segmentation to get higher margins. Same reason ECC is not supported on consumer processors from Intel. Here it would be almost trivial to add, but they don't. Simple business strategy.
- nirvdrum 9y agoYou're probably aware, but the desktop i3 does support ECC. Well, at least through the 7th generation. It looks like now that it's added 2 cores in the 8th generation, ECC has been dropped (NB: I didn't look at all models). So, they're okay with it on consumer parts, as long as you're not looking to do anything resembling professional work I guess.
- sitkack 9y ago> ECC requires more resources and is therefore intrinsically more expensive manufacturing cost is non-linear. Obviously intrinsically word gunk.
- skummetmaelk 9y agoCan you expand on this? Memory already includes controller logic and adding ECC logic does not need a seperate process. All you need is more silicon real estate because of the extra bits needed for the ECC. Silicon is cheap.
- dom0 9y agoIn most previous generations all Core iX dice have had support for ECC, selectively disabled through fusing. Obviously, all internal busses and caches use error correction/detection independent of what the memory controller does.
- Dylan16807 9y ago> Obviously ECC requires more resources and is therefore intrinsically more expensive. Technically. A fraction of a percent increase in die size for the memory transceivers, basically nothing for making and verifying checksums. It's all business strategy.
- tormeh 9y agoNot really. Most people don't care about ECC and gamers actually prefer the faster non-ECC ram. Since ECC is more expensive to make, the industry is obviously not going to sell ECC to people not willing to pay more for it. And in a lucky coincidence it turns out that those who want ECC are willing to pay the moon for it, which of course gatekeepers like Intel exploit.
- ticviking 9y agoI'd take a slight slowdown in ram access if I knew for sure that my game won't bluescreen.
- oldsklgdfth 9y agoYour point seems to make sense in GPU lands as well. Nvidia offers ECC on their workstation class GPUs - quadro - but not on their gaming GPU - gtx.
- dom0 9y agoGaming GPUs have different qualification targets anyway. They will error fairly frequently compared to e.g. your CPU; something that doesn't matter when most errors become invisible after about 16 ms, but not really something you want to see e.g. in a simulation.
- DCKing 9y agoWell I don't think there's anything about ECC, or at least unbuffered ECC, that should make memory slower than non-ECC memory. "Fast" memory it seems to me is also just a marketing thing. If ECC was considered mainstream as it should be then I think we'd have overpriced '4000MHz Gaming X Raptor' ECC modules all the same. I'm also not convinced that unbuffered ECC makes memory modules significantly more expensive. Basically there's no evidence that ECC memory is signficantly slower or more expensive than non-ECC memory. Obviously it's slightly more complex than non-ECC memory, but it's not a particularly high-tech addition. For all its supposed complexity/slowness, Samsung is using it in its caches on their Exynos SoCs. Everything can be perfectly explained in terms of market segmentation.
- KGIII 9y agoMany and CPUs support ECC. It will take a bit longer to find a motherboard that supports them, but they are out there. Consumer ECC is an option but few seem to know about or opt for it. I want to say I had ECC in my old AMD K6-350, but that was a lot of years ago. Either way, I'm pretty sure they have supported it for a long time and in many of their CPUs, even the CPUs aimed at consumers. Here's a comment I made last night, if you want to dig in and find some current offerings: https://news.ycombinator.com/item?id=15406565 https://news.ycombinator.com/item?id=15406565
- ju-st 9y agohttps://www.eetimes.com/author.asp?section_id=36&doc_id=1325816 https://www.eetimes.com/author.asp?section_id=36&doc_id=1325...
- jandrese 9y agoTheoretically going with ECC Memory should add about 20% to your memory budget, but due to artificial chipset limitations and "enterprise pricing" it is often more like 500%. Personally, I've always found this to be very annoying. The only people using non-ECC memory should be Xtreme Gamer type people who don't care about their data and only care about squeezing that last 2% out of their system to land at the top of the penis size chart. Non-ECC should be a feature like liquid N2 cooling.
- ensignavenger 9y agoCurrent market prices for ECC RAM are approximately twice as much. I just built anew Ryzen system and considered using ECC, but I couldn't find any DDR4 3000 RAM, and the DDR 4 2666 ECC Ram was just under twice as much as the DDR4 3000 non ECC I ended up with. Opportunity for a future upgrade , though. (My motherboard does support ECC :) The real question though for a large scale consumer product manufacturer is how much margin they could convince the RAM makers to give up on ECC. Once it became standard, it probably would not cost much more than non ECC. Maybe 15% more? (1/8th extra memory, plus some extra for other expenses.)
- flyinghamster 9y agoI found that, at least for DDR4-2400, the ECC price premium is about $50 per 16 GB stick. I sprang for it anyway, but still winced at the cash register racking up the numbers for my own Ryzen upgrade. It is nice to see "EDAC amd64: DRAM ECC enabled." in my dmesg output. :) That, and the NVMe SSD is screaming fast. I'm debating whether to try my hand at overclocking my R7-1700, but even leaving it at the stock clocking it's pretty speedy, and it runs cool with the stock cooler.
- dom0 9y agoECC is often used without being advertised. For example, hard drives aren't advertised as using these kinds of codes, yet all of them do. Similarly, switches will often use ECC memory without making it an explicit point in the advertising. Industrial computers tend to have ECC, yet you will have to look closely at the data sheet to see this. And of course all internal busses and caches in pretty much any desktop/server/workstation CPU use error correction/detection. The moral of this story is that ECC is only ever advertised explicitly, when it is special to have, i.e. because there are segments in the market where it is not used. (A somewhat curious case are small microcontrollers. Often these control relatively important aspects of machinery, for example, drives [say a bit-flip in the drive controller turns STOP into RUN, which can get rather ugly on e.g. a lathe]; these usually don't have ECC. However, they are manufactured in very coarse processes and generally don't use DRAM.)
- mafsedan 9y agoExactly. Any CPU for real work that can't support ECC memory is useless.
- robin_reala 9y agoDoes anyone have any info as to which study lead to the 1 error per Gb per year statistic?
- keldaris 9y agoJust to offer a partial counterpoint to the popular "ECC is a must for real work" sentiment, I've ran many 60-day simulations where a few bit errors would be completely irrelevant. Many physics simulations include internal checks (that must be there regardless of ECC, for algorithmic reasons) that would catch virtually all such issues. While a bit error could certainly crash the simulation, long running simulations can be resumed from checkpoints with minimal loss of time and the probability of a crash is still very low for most real workloads. In truth, there are plenty of good reasons, both for data integrity and security, to have ECC. However, there are real costs to ECC too - 10-30% immediate performance overhead (depending on your application) and much more than that for memory-bound workloads (due to lower frequencies and subtiming issues), not to mention hardware cost efficiency. Instead of oscillating between "ECC for everything" and "ECC is useless" people should rationally compare the costs and benefits for their specific workload and choose accordingly.
- dna_polymerase 9y agoThank you! That sentiment on HN about how "Everything should have ECC" really grinds my gears. There is no need for ECC in your iPhone or on your MacBook. Your average emoji-laden WhatsApp Conversation with your friends does not require Bit Error Correction. People who really need ECC do exactly what you just mentioned: Evaluate, and often enough they will find little to gain from ECC.
- sitkack 9y ago> There is no need for ECC in your iPhone or on your MacBook. Scientists, Engineers and Economists shouldn't use a Phone or MacBook? Your handle is ironic. The lack of ECC is a method to artificially segment markets and nothing more. Not ECC, but "single bit errors" can be fatal in other domains [0] [0] https://gizmodo.com/382026/a-cellphones-missing-dot-kills-two-people-puts-three-more-in-jail https://gizmodo.com/382026/a-cellphones-missing-dot-kills-tw...
- sixbrx 9y agoI imagine bit errors are highly unwanted on any domain when they occur in pointers, especially on those that are written through. Some languages make that more likely than others of course with heavy use of references.
- semi-extrinsic 9y agoDepends on your simulation. Are you using your workstation to do molecular dynamics? Or turbulent fluid simulations? A little extra randomness in two bits every day won't hurt you. See e.g. this paper by Walker and Betz from the San Diego Supercomputing Centre (paper from XSEDE '13) on the effect of ECC on GPUs for MD simulations: https://dl.acm.org/citation.cfm?id=2484774 https://dl.acm.org/citation.cfm?id=2484774
- sitkack 9y agoSounds like we need a kernel module to introduce bit flips for bespoke errors.
- dom0 9y agoThe Linux EDAC (for ECC memory controllers) module allows injecting address-based errors (simulating the MC reporting a fault). You can also use ptrace to corrupt the memory of a process more subtly.
- Asooka 9y agoExcept if the bit error happens in a pointer and you end up reading from the wrong part of memory. Or in your file system driver and you corrupt the file system. Yes, it will most likely be in the 500GB of float arrays, but why would you risk it?
- iainmerrick 9y agoExactly. I'm amazed at how blithely people dismiss the impact of bit errors. A random bitflip could break anything! That's terrifying. Even if it's just in a float, it looks like a single bitflip could change FLOAT_MAX to NaN. That could hurt.
- cjbillington 9y agoYeah but you'll notice, and resume the simulation from a previous checkpoint or something. The risk is with errors that you don't notice, but that nonetheless change the outcome in a meaningful way. That seems to me to actually be a pretty small space of situations.
- qaq 9y agoWell it's nice to finally have serious competition in x86 CPU market.
- rrdharan 9y ago... again. https://en.m.wikipedia.org/wiki/Opteron https://en.m.wikipedia.org/wiki/Opteron https://en.m.wikipedia.org/wiki/Athlon https://en.m.wikipedia.org/wiki/Athlon https://en.m.wikipedia.org/wiki/AMD_K6 https://en.m.wikipedia.org/wiki/AMD_K6
- qaq 9y agogood point but it has being a while
- theyregreat 9y agoIf money were no object, Xeon Platinum 8180m ($13k retail).
- KekDemaga 9y ago28 cores sure, but they run a base frequency of 2.50GHz. For $1469 you can have the i9-7940X 14 cores at 3.1GHz probably more suitable for a workstation.
- SSLy 9y agoNo ECC support
- KekDemaga 9y agoI'd go for the Threadripper 1950X if that is a requirement then 16 cores, 3.4 GHz, ECC support all for under $1000. Intel doesn't really have anything that meets those requirements at a reasonable price.
- really_operator 9y agoI thought he said if money was no object...
- KekDemaga 9y agoIt depends on the workload but for most cases those extra cores will just sit idle (that Intel is for things like webservers serving many concurrent requests), for most general workstation tasks you'll get better performance from the AMD offering. It's sort of like buying a half million dollar tractor trailer to go fast instead of a hundred thousand dollar sports car.
- mtgx 9y agoThen his choice is $13,000 vs $1,000. Money may not be an object, but choosing the first option seems a little stupid. Even rich people don't throw away money like that, because if they did, they probably wouldn't have gotten rich in the first place.
- gsnedders 9y agoI wonder how the EPYC 7401P would compare with the 1950X in terms of performance/price? It has 24 cores v. 16, but with a lower clock speed, and is $51 more. If you can actually use all the cores, I suspect better?
- dman 9y agoYes for compiling that appears much better.
- philjohn 9y agoHow much more are the Mobo's though?
- infogulch 9y agoAnd do the motherboards support features that you would expect out of a consumer version? They often only have a couple usb and video out, with very few features.
- dis-sys 9y agothere are claims online that 7401p has a cinebench score of 4,200+, if such claim is true, then it is much faster than 1950x for cpu intensive embarrassingly parallel workloads. the problem is you can't easily buy a 7401, there is no video online verifying the claimed cinebench score is a pretty good example on how hard to get access to one.
- deleted 9y ago[deleted]
- xelxebar 9y agoSomewhat off topic, but what about open hardware platforms that are really friendly to hacking around on the hardware? Is this just a thing of dreams?
- nbathum 9y agoCan you explain more what you mean by open hardware, or expand on what kind of hacking around are you looking to do?
- xelxebar 9y agoThanks for asking! I don't have any precise requests, but I would like to be able to pretty much hook up an oscilliscope or logic analyzer anywhere and in principle be able to understand what's going on. I'm looking to get into hardware by way of tinkering and my mental model is of open software. Currently, any time I have a burning question about one of my tools, I can just open a man page as well as start digging into the source. I think it would be cool to do the spiritual equivalent with hardware. For example, I am currently digging into the bootup process--everything after CPU POST until a fully ready userspace. However, the details that between pressing the power button on the power supply and CPU POST are completely opaque to me, and some are completely opaque even in principle on my current system. I'd like to have the ability to fully grok the electrical underpinnings of what's going on or at least as close as possible.
- Dowwie 9y agoHasn't cloud computing reached the point where local workstations like this aren't required?
- drej 9y agoThey still are required, for at least three reasons - UX, cost, and security. 1. For a lot of workloads, it's more convenient to run in on a desktop. Sure, with the right tooling, you can bridge your cloud and desktop pretty seamlessly, but a lot of people can't do that or it's not possible with their tooling. Sure, it doesn't scale, but it often doesn't need to. 2. A Threadripper CPU may cost $1000, but but look at what that buys you in the cloud. The machine pays for itself within a year if used extensively. 3. Sometimes it's not easy to just upload code and data (!) to the cloud. Sure, there's all sorts of security layers and certifications and yes, clouds are very often more secure than desktops, but still, some people can't afford to let their data leave their machines. Two of these were a thing at my former employer (but we still used the cloud for other use cases). So no, I wouldn't say these workstations are obsolete.
- fsloth 9y agoNo, it hasn't. I'm not saying we wont reach a stage at some point where compute power is a utility like electricity or water but we are definetly not there yet. I mean, in the least, I can't go to my local PC vendor and purchase a slow terminal with some compute credit allowance to nearest EC2 center or whatnot. When we get there, we can ask this question again.
- badosu 9y agoIf your requirement is to have a predictable, responsive environment without having your assets intercepted then no.
- dagw 9y agoFirst of all no one has really successfully solved the running Autocad etc. in the cloud problem. Secondly the per core performance is generally pretty poor on cloud computers when compared to high end workstations and for many workloads 16 really fast cores beat out 64 slower cores. Finally, cloud computing is still really expensive compared to dedicated hardware. A halfway decent EC2 'workstation' like the p2.xlarge is over $5000 a year (plus storage) if you pay for the whole year up front and that 'only' gets you 4 cores and 60 GB of RAM (and a pretty good GPU). $5000 will buy you a really nice workstation with much better specs, and you get to keep it at the end of the year
- SeanDav 9y agoOT: I am in the market for an upgrade to my home PC. I use it for Compiling and Gaming. I am finding the sheer variety of CPU's and their weird naming conventions utterly confusing. Then combine that with the almost-as-confusing choice of motherboards and the bit-better-but-not-much choice of RAM and I am completely lost. Any tips out there for finding a path through this maze, how do I upgrade my PC without requiring an advanced degree in Intel/AMD marketing speak? EDIT: Added use of PC.
- Kayou 9y agoBasically, IPC in an Intel core is a bit better than in an AMD core. Keeping this in mind, you can compare core counts, frequency, power draw, PCIe lines or whatever floats your boat. To compensate for a lower IPC, AMD will give you more cores (sometimes a lot) for the same price. It all depends of what you need your processing power for.
- theandrewbailey 9y agoWhat are you doing? Gaming? Rendering? Video editing? Compiling?
- ccalvert 9y agoNot sure about SeanDav, but I do a lot of compiling and wonder if anyone has any suggestions about the best CPU to buy. I want short wait times for a compile, but I still care about price. I don't want to go over $500 but would prefer less.
- dman 9y agoLook at the Ryzen 1700X. Its a full fledged 8 core and down to 299 (https://www.amazon.com/exec/obidos/ASIN/B06X3W9NGG/55467-20/ref=gb1h_img_m-3_3342_169dd9fc?smid=AANSFONOCR8T3&psc=1&pf_rd_m=A3DWYIK6Y9EEQB&pf_rd_t=101&pf_rd_s=merchandised-search-3 https://www.amazon.com/exec/obidos/ASIN/B06X3W9NGG/55467-20/...). Dont think Intel has something that comes close to that for compile times at that price point (If someone has a counter point on this I would love to be corrected).
- dis-sys 9y agoanandtech.com used to be an okay source, but it is getting worse pretty quick, non-sense article like this is helping anantech to get that position fast. threadripper 1950x is not the overall best workstation processor, it is more like a toy for kids into gaming/overclocking. 1950x is slow for multithreaded applications, it has a low cinebench score of ~3,000, you pay some serious $ for a fancy motherboard full of LED lights, then you don't have officially verified ECC support. As a comparison, you get the same mutithreaded speed, much cheaper system cost if you just buy second hand dual 2696v2 processors with real ECC support. if you need real processing power in a single box and have a tight budget, there is a flood of E5-2696v4 processors on the market at $950-1,100 each. for a much nicer budget, you can always go dual/quad Intel 8180.
- skummetmaelk 9y ago> 1950x is slow for multithreaded applications Says who? The Intel marketing department?
- dis-sys 9y agoAccording to a 21 years long term AMD user. Compared to my dual 2969v4's multithreaded performance, 1950x is sloooow. Please don't bother mentioning 2p EPYC, you simply can not order it and expect a reliable ETA, most models were released on paper. what is your first AMD processor? mine was AM486DX4-120
- dman 9y agohttp://www.velocitymicro.com/wizard.php?iid=327 http://www.velocitymicro.com/wizard.php?iid=327 - you can order a 64 core Epyc workstation today.
- dis-sys 9y agoyes, you can order today and the estimated ship date is 4 week from today. please double check the suggested web site. as comparison, I can order a pair of 8180 processors, its mb and RAM now and expect the package to arrive in 12 hours.
- ptero 9y agoSomewhat off-topic, but I need to replace my ancient workstation and would love a recommendation. I prefer to max cores and do not care much for clock speeds (I work mostly on algorithm development and can parallelize experiments relatively easily but often run multiple unrelated tests). 10-15k budget. I was thinking of dual-CPU Z840; are there better options?
- dsr_ 9y agoYou can get 64 cores, 128 threads on a 2P EPYC7551 with 256GB of ECC RAM in a rackmount server with redundant power supplies for that much money. e.g. SiliconMechanics.com
- ptero 9y agoThank you for the suggestion, I will look at SiliconMechanics. I need a tower, not rack mounted, but I see capable systems with 24-28 cores there. The site seems to be in a disarray, at least for high performance workstations (two rightmost options of the four, which I would assume to be the most capable are showing up as discontinued when I click on them, etc.).
- e12e 9y agoI don't know them, but in a Web search for dual cpu workstations, I came across Velocity micro: http://www.velocitymicro.com/desktop-workstation-pc.php http://www.velocitymicro.com/desktop-workstation-pc.php Might be worth a look, unless you can make do with a second-hand dual xeon workstation from eBay (possibly adding in an nvidia 1080 or two).
- latch 9y ago$999 for the best choice seems really high to me. I understand that they're trying to generalize a broad range of applications, but still. They mention the Ryzen 5 is better bang for the buck, but dismiss it for having "low overall performance." I guess I'm wrong in thinking that, for 98% of people, a $250 CPU would still be wasteful.
- Athas 9y agoIt's about picking a CPU for workstations, though, not normal desktop machines. It's assumed you will need serious computational power, and that's not free. That's also why they highlight the presence of so many PCIe lanes.
- mrich 9y agoBut this is about workstations where CPU bound workloads are running, like rendering or compilation. Most people will either buy a laptop or desktop (if their smartphone is not sufficient) and not spend nearly as much money, they only need to run a browser and a couple of other small programs.
- dredmorbius 9y agoA browser is not a small program. Video can still be demanding (watching, or chat). The workloads are fairly standardised and non-diverse. Not necessarily small.
- dom0 9y ago$999 for a workstation CPU is quite alright.
- parski 9y agoDoesn't Coffee Lake release today? I'm upgrading for sure.
- ghostbrainalpha 9y agoIt did. Discussion here: https://news.ycombinator.com/item?id=15408850 https://news.ycombinator.com/item?id=15408850
- linsomniac 9y agoWhy does the image on this article show rackmount equipment while talking about workstations? I find their selections to be, at least for my work, much more server-oriented than workstation. Do a lot of people really run >512GB RAM in their workstations rather than running a "thin" workstation and running simulations on servers or EC2? I just built a new workstation a couple months ago: i7 7700 (not the K), 64GB RAM, one of those closed loop CPU water coolers... As a workstation, I wanted it quiet, and performance has been great. Long running jobs I run on our dev/stg cluster (4 machines, 512GB total RAM, 48 total cores.
- microcolonel 9y agoI second that, in most cases, 64GiB is enough for workstation clients. I can think of some reasons to have twice, four times, or eight times as much though. You can almost never have enough block cache, after all. Local testing databases come to mind. Also, tracing/profiling Elixir programs takes up enormous amounts of memory. My colleagues at my last company did not have enough RAM to generate meaningful profiles of our system, 64GiB was just barely enough to get a signal out of it. Rather than spending a month working on the profiler, it was nice to be able to get some data out of it as-is.
- glenneroo 9y agoDepends on what you're doing. With video or 3D work, 64GB can often be a bottleneck. With After Effects and Maya rendering we've gone over our 96GB RAM limit using dual Xeon 6-core (i.e. 24 logical) on multiple occasions, especially rendering 4K+ scenes, forcing us to set limits on RAM/thread usage. I want to upgrade them to 128GB but getting bigger ECC RAM sticks in Austria (and EU in general) was (and still is) difficult and stupidly expensive.
- sandworm101 9y agoA workstation will be used or at least turned on 24/7. The one I just sat down at sure is. So when calculating costs one should include daily power consumption (power used + cooling needs). Some of these new intel chips run very hot.
- j_s 9y agoA discussion when Ryzen was released had quite a bit of info on PC builds: Ryzen is for Programmers | https://news.ycombinator.com/item?id=14243350 https://news.ycombinator.com/item?id=14243350 (May 2017, 272 comments)
- dabockster 9y agoWhy did I have to scroll down so far for a Ryzen shoutout? Building with Ryzen has been one of my best investments in years.
- dragontamer 9y agoJust in time for Intel to release the 6c/12t Coffee Lake i7, and make all of these comparisons (slightly) out of date.
- todd8 9y agoRemember that one-bit errors aren't necessarily small errors. A single one bit change when working with 64 bit floating point can result in a very large difference in value. 0b0111111111101111111111111111111111111111111111111111111111111111 == 1.7976931348623157e+308 0b0011111111101111111111111111111111111111111111111111111111111111 == 0.9999999999999999
- flamedoge 9y agoand potentially jump to a function that rm -rf /
- euroclydon 9y agoHow often doe a program load an FP with a value at the absolute extreme of the range though? I mean, if my value is there, I probably already have a problem.
- robotresearcher 9y agoThe highest bit is the sign bit. Flipping that one is interesting.
- todd8 9y agoYes, but the point is that flipping a single bit can change a value dramatically. While using 64 bit ints for example programs are likely using a limited range of values and flipping a bit in say the middle of the int will change the value by plus or minus 4294967296. Not many programs will handle this gracefully.
- siliconunit 9y agoI was one step from getting a threadripper... But then I opted for a 1800x, I will invest more on the gpu side when there will be the hw to properly drive a 4/8k vr headset eh:) I wonder though if there's a way to restore disabled cores on a Epyc chip... As according to and Amd they all born with 32 cores...
- hsivonen 9y agoThe new AMD CPUs look otherwise good, but it seems they still don't run rr. Giving up rr is not a reasonable option if the purpose of the workstation is developing software in the kind of language that gdb can make sense of (C, C++, Rust).
- intrasight 9y agoSince this article is about "workstations", it should have only considered ECC-enabled systems. Since it didn't (hardly mentioned ECC in fact) it's a useless article IMHO.