Posted by Coder.
Posted by Coder.
Nati Shalom’s Blog: Why most large-scale Web sites are not written in Java
…similar solutions for addressing the scalability challenges:
On the Data Tier we see the following:
1. Adding a caching layer to take advantage of memory resources availability and reduce I/O overhead
2. Moving from a database-centric approach to partitioning, aka shards
On the Business Logic Tier:
3. Adding parallelization semantics to the application tier (e.g., MapReduce)
4. Moving to scale-out application models to achieve linear scalability
5. Moving away from the classic two-phase commit and …
Posted by Coder.
Cary Millsap, former VP of Oracle’s System Performance Group and the cofounder of Hotsos.
…doing things an application doesn’t need to do is exactly what makes it slow, unscalable, and—in the end—economically inefficient.
Don’t run reports that nobody reads.
Don’t generate more output than you need.
Don’t execute a business process any more often than the business needs.
Don’t write SQL that visits more blocks in the database buffer cache than necessary.
Don’t update a column’s value to the same value it already has.
Push data when …
Posted by Coder.
StorageMojo » Benchmarking energy efficiency
JouleSort is an I/O-centric benchmark that measures the energy efficiency of systems at peak use. Like previous sort benchmarks, one of its goals is to gauge the end-to-end effectiveness of improvements in system components. To do so, JouleSort allows us to compare the energy efficiencies of a variety of disparate system configurations. Because of the simplicity and portability of sort, previous sort benchmarks have been technology trend bellwethers, for example, foreshadowing the transition from supercomputers to …
Posted by Coder.
Library Components
Threading Building Blocks contains the following library components:
Generic Parallel Algorithms
parallel_for
parallel_reduce
parallel_scan
parallel_sort
parallel_while
pipeline
Assistant Classes to Use with Algorithms
blocked_range (for use with algorithms, containers, etc.)
blocked_range2d (for use with algorithms, containers, etc.)
Thread-Safe Containers
concurrent_hash_map
concurrent_queue
concurrent_vector
Synchronization Primitives
atomic
spin_mutex
spin_rw_mutex (reader-writer spin mutex)
queuing_mutex
queuing_rw_mutex (reader-writer queuing mutex)
mutex
Task Scheduler
Memory Allocation
scalable_allocator
cache_aligned_allocator
aligned_space
Timing
tick_count
Posted by Coder.
Optimization of Computer Programs in C,Michael E. Lee(oldie but goodie)
Optimizing Page Load Time, Aaron Hopkins
10 Tips for Optimizing MySQL Queries (That don’t suck), Jesse @ 20bits.com
Optimize website Performance, Mike Peters
Debunking myths: proxies impact performance, Alef Arendsen
Posted by Coder.
Performance Tuning PostgreSQL
…understand the life cycle of a query. Here are the steps of a query:
1. Transmission of query string to database backend
2. Parsing of query string
3. Planning of query to optimize retrieval of data
4. Retrieval of data from hardware
5. Transmission of results to client
Posted by Coder.
Did it with .NET – A Higher Calling (revisited)
… already have equivalents in the .NET Framework 3.5.
1. Filter = Where
2. Map = Select
3. Reduce = Aggregate
Each of these are implemented as extension methods for IEnumerable. So, we can rewrite the code like this:
static void Main()
{
var numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
var sum = numbers.Where(x => (x % 2) == 0).Select(x => x * x).Aggregate(0, (x, …
Posted by Coder.
Nicholas Allen’s Indigo Blog : Queue Scalability
A quick way to judge which way you need to scale next with your queue is to look at the bottlenecked resource. If you have exhausted the amount of network bandwidth you have moving messages out of the queue, then you should be thinking about moving the queues close to the service and scaling up. If you have exhausted the amount of computational power, either processing or disk, then you should be …
Posted by Coder.
InfoQ: QCon: REST for SOA at Yahoo!
Instead of replicating data between a backend master database and the frontend database, the frontend boxes now issue requests through a cache to backend API servers, all via HTTP. Because of this, there is now a single source of truth. The cache replicates the data once it has been requested – a pull model vs. a push model. Questioned whether this is a RESTful API, Mark stressed that he views issues around REST as …
Posted by Coder.
Martin Fowler: Transactionless
The rationale for not using transactions is that they harm performance at the sort of scale that ebay deals with. This effect is exacerbated by the fact that ebay heavily partitions its data into many, many physical databases. As a result using transactions would mean using distributed transactions, which is a common thing to be wary of.
This heavy partitioning, and the database’s central role in performance issues, means that ebay doesn’t use many other database facilities. Referential integrity …