I recall a whitepaper on HP high-end storage arrays from over 10 years ago, their arrays already read and cached at least 256kB of data, even if you wanted only a 4kB block.
6,486 karma · joined July 15, 2018
blog: tanelpoder.com
I recall a whitepaper on HP high-end storage arrays from over 10 years ago, their arrays already read and cached at least 256kB of data, even if you wanted only a 4kB block.
I did some more reading and the PDF [1] says it shows up as two separate LUNs behind a single SAS port, but sharing the drive cache.
But what I initially didn't catch (and another comment here pointed out), is how come they claim to do over 500 MB/s of sequential scanning I/O. Small random IOPS I get, but for large sequential I/Os you still have the same amount of platters, with the same bit-density, rotating at the same speed... Or is even the sequential I/O throughput "bottleneck" mostly dominated by the tiny seeks + calibration to the next adjacent track and not the actual magnetic reading part?
I now really want to buy one for (some?) reason. Could get an used version from amazon for $150 but I'll try to hold back. It's also interesting that there are no new, unused versions available there (discontinued?)
[1] https://www.seagate.com/files/www-content/solutions/mach-2-m...
I think it was @quinnypig who coined it...
$ strace -kk pwd
strace: Stack traces with source line information (-kk/--stack-trace=source option) are not supported by this build of strace
Also, there's "perf trace" that has now gotten pretty good reporting the system call arguments and context (in older versions it didn't report enough details of the system call arguments & their contents).As strace uses userspace ptrace(), it slows down the traced processes and may even cause failures due to mucking around with signalling, perf trace doesn't have that problem as it uses kernel tracepoints.
Edit: In the post you mentioned that you optimized the hot path for likely taking the non-matching record path. Sometimes with well-designed partition wise joins, most of the records actually do match and survive the join - I guess in such (estimated or detected) cases you could switch to an alternative path with a match being the likely branch in the hot path…
I suspect that longer PCIe extender cables would have signal quality issues (so far with my setup I haven't seen any issues, mem copy throughput is as expected and no PCIe AER errors reported)
For more complex cases, one could write (or autogenerate) triggers, but that will likely cause performance and maintenance issues... so the other option is to standardize any important data validation & logic into application code - and that part of application code can be stored procedures if it needs to be close to the database.
Edit: Sometimes it's easier to sell the idea of using stored procedures for (data) logic to non-database developers when you call them database APIs instead of stored procedures :-)
https://docs.oracle.com/en/database/oracle/oracle-database/2...
So this is not bytecode interpretation, it's native machine code executed directly on CPU whenever the SQL exec engine decides to jump there. This is different from, say Apache Impala that compiles new LLVM machine code for each query execution for the query's scanning tight loops.
Edit: I guess why I see this as not just not regular bytecode interpretation (I don't actually know that much about it in general), is that these building blocks can include various loops (and can do their thing on entire vectors of data), so looks like they can push quite a bit of complexity into the machine code sections, before returning back to the normal interpreted AST/opcode land.
Edit: It's worth clarifying that the entire codebase does not run like that, not even the entire plan tree - just the scans and tight vectorized aggregation/join loops on the columns/data ranges that happen to be held in RAM in a columnar format.
Got 3.5-4 tokens/s, GPU compute was <20% busy (~90W) and the 16 CPU cores / 32 threads were about 50% busy.
https://github.com/NVIDIA/open-gpu-kernel-modules/commit/1f4...
"Unnerved by the idea that he could have rolled over on his watch while sleeping and allowed criminals to take over his Apple account, Ken said ..."
Once the article was updated, the original sentence implying that criminals could take over your account while you are sleeping was completely rewritten to say the 180 degree opposite - completely reversing what the initial sensational content said. In reality it is not possible to accidentally hand over your account to attackers by accidentally tapping Allow on your watch in your sleep.
The update disclosure only says: "Added perspective on Ken’s experience."
It's surprising that Krebs chose to omit this little detail in the security blog and instead seemed to confirm that someone could completely give away access to their account while sleeping.
I've learned a lot from Cary Millsap over the last 2 decades and he recently published a general performance optimization book "How to Make Things Faster" that I can recommend [1]. It's less about tools, more about the method and systematic approach for performance optimization:
Luckily this "wasn't my first monitor", so I quickly returned it and went back to Dell that's always been OK enough so I don't ever have to pay attention to which monitor or display setting I'm using.