Peer comparisons, or benchmarking, can help libraries better understand their performance and can support everyday decision making, such as establishing baselines and identifying opportunities to improve services. The data dashboards and comparison tools are robust, interactive, and user-friendly. Each visualization can be filtered by Carnegie classification (both general and detailed), country, state, survey year, and custom peer group.
The best stock benchmark is an index that matches your portfolio or holdings the closest."}},"@type": "Question","name": "Is the S&P 500 a Good Benchmark?","acceptedAnswer": "@type": "Answer","text": "It is very commonly used, but many more can be used based on how the benchmark is designed. Some widely used benchmarks in the stock market are the Wilson 5000, Dow Jones Industrial Average, and the Russel 2000.","@type": "Question","name": "How Is a Benchmark Calculated?","acceptedAnswer": "@type": "Answer","text": "Different indexes use different methods to calculate their performance. For example, the S&P 500 uses a free-float market capitalization method."]}]}] Investing Stocks Bonds ETFs Options and Derivatives Commodities Trading FinTech and Automated Investing Brokers Fundamental Analysis Technical Analysis Markets View All Simulator Login / Portfolio Trade Research My Games Leaderboard Banking Savings Accounts Certificates of Deposit (CDs) Money Market Accounts Checking Accounts View All Personal Finance Budgeting and Saving Personal Loans Insurance Mortgages Credit and Debt Student Loans Taxes Credit Cards Financial Literacy Retirement View All News Markets Companies Earnings CD Rates Mortgage Rates Economy Government Crypto ETFs Personal Finance View All Reviews Best Online Brokers Best Savings Rates Best CD Rates Best Life Insurance Best Personal Loans Best Mortgage Rates Best Money Market Accounts Best Auto Loan Rates Best Credit Repair Companies Best Credit Cards View All Academy Investing for Beginners Trading for Beginners Become a Day Trader Technical Analysis All Investing Courses All Trading Courses View All LiveSearchSearchPlease fill out this field.SearchSearchPlease fill out this field.InvestingInvesting Stocks Bonds ETFs Options and Derivatives Commodities Trading FinTech and Automated Investing Brokers Fundamental Analysis Technical Analysis Markets View All SimulatorSimulator Login / Portfolio Trade Research My Games Leaderboard BankingBanking Savings Accounts Certificates of Deposit (CDs) Money Market Accounts Checking Accounts View All Personal FinancePersonal Finance Budgeting and Saving Personal Loans Insurance Mortgages Credit and Debt Student Loans Taxes Credit Cards Financial Literacy Retirement View All NewsNews Markets Companies Earnings CD Rates Mortgage Rates Economy Government Crypto ETFs Personal Finance View All ReviewsReviews Best Online Brokers Best Savings Rates Best CD Rates Best Life Insurance Best Personal Loans Best Mortgage Rates Best Money Market Accounts Best Auto Loan Rates Best Credit Repair Companies Best Credit Cards View All AcademyAcademy Investing for Beginners Trading for Beginners Become a Day Trader Technical Analysis All Investing Courses All Trading Courses View All EconomyEconomy Government and Policy Monetary Policy Fiscal Policy Economics View All Financial Terms Newsletter About Us Follow Us Table of ContentsExpandTable of ContentsWhat Is a Benchmark?Understanding BenchmarksUsing a BenchmarkBenchmark FAQsThe Bottom LineInvestingPortfolio ManagementBenchmark: What It Is, Types, and How to Use Them in InvestingBy
It is very commonly used, but many more can be used based on how the benchmark is designed. Some widely used benchmarks in the stock market are the Wilson 5000, Dow Jones Industrial Average, and the Russel 2000.
Redis includes the redis-benchmark utility that simulates running commands doneby N clients while at the same time sending M total queries. The utility providesa default set of tests, or you can supply a custom set of tests.
By default, the benchmark runs against a single key. In Redis the differencebetween such a synthetic benchmark and a real one is not huge since it is anin-memory system, however it is possible to stress cache misses and in generalto simulate a more real-world work load by using a large key space.
By default every client (the benchmark simulates 50 clients if not otherwisespecified with -c) sends the next command only when the reply of the previouscommand is received, this means that the server will likely need a read callin order to read each command from every client. Also RTT is paid as well.
The first point is obvious: the golden rule of a useful benchmark is toonly compare apples and apples. You can compare different versions of Redis on the same workload or the same version of Redis, but withdifferent options. If you plan to compare Redis to something else, then it isimportant to evaluate the functional and technical differences, and take themin account.
The redis-benchmark program is a quick and useful way to get some figures andevaluate the performance of a Redis instance on a given hardware. However,by default, it does not represent the maximum throughput a Redis instance cansustain. Actually, by using pipelining and a fast client (hiredis), it is fairlyeasy to write a program generating more throughput than redis-benchmark. Thedefault behavior of redis-benchmark is to achieve throughput by exploitingconcurrency only (i.e. it creates several connections to the server).It does not use pipelining or any parallelism at all (one pending query perconnection at most, and no multi-threading), if not explicitly enabled viathe -P parameter. So in some way using redis-benchmark and, triggering, forexample, a BGSAVE operation in the background at the same time, will providethe user with numbers more near to the worst case than to the best case.
To run a benchmark using pipelining mode (and achieve higher throughput),you need to explicitly use the -P option. Please note that it is still arealistic behavior since a lot of Redis based applications actively usepipelining to improve performance. However you should use a pipeline size thatis more or less the average pipeline length you'll be able to use in yourapplication in order to get realistic numbers.
The benchmark should apply the same operations, and work in the same waywith the multiple data stores you want to compare. It is absolutely pointless tocompare the result of redis-benchmark to the result of another benchmarkprogram and extrapolate.
For instance, Redis and memcached in single-threaded mode can be compared onGET/SET operations. Both are in-memory data stores, working mostly in the sameway at the protocol level. Provided their respective benchmark application isaggregating queries in the same way (pipelining) and use a similar number ofconnections, the comparison is actually meaningful.
When you're benchmarking a high-performance, in-memory database like Redis,it may be difficult to saturatethe server. Sometimes, the performance bottleneck is on the client side,and not the server-side. In that case, the client (i.e., the benchmarking program itself)must be fixed, or perhaps scaled out, to reach the maximum throughput.
There are multiple factors having direct consequences on Redis performance.We mention them here, since they can alter the result of any benchmarks.Please note however, that a typical Redis instance running on a low end,untuned box usually provides good enough performance for most applications.
Network bandwidth and latency usually have a direct impact on the performance.It is a good practice to use the ping program to quickly check the latencybetween the client and server hosts is normal before launching the benchmark.Regarding the bandwidth, it is generally useful to estimatethe throughput in Gbit/s and compare it to the theoretical bandwidthof the network. For instance a benchmark setting 4 KB stringsin Redis at 100000 q/s, would actually consume 3.2 Gbit/s of bandwidthand probably fit within a 10 Gbit/s link, but not a 1 Gbit/s one. In many realworld scenarios, Redis throughput is limited by the network well before beinglimited by the CPU. To consolidate several high-throughput Redis instanceson a single server, it worth considering putting a 10 Gbit/s NICor multiple 1 Gbit/s NICs with TCP/IP bonding.
CPU is another very important factor. Being single-threaded, Redis favorsfast CPUs with large caches and not many cores. At this game, Intel CPUs arecurrently the winners. It is not uncommon to get only half the performance onan AMD Opteron CPU compared to similar Nehalem EP/Westmere EP/Sandy BridgeIntel CPUs with Redis. When client and server run on the same box, the CPU isthe limiting factor with redis-benchmark.
When the server and client benchmark programs run on the same box, boththe TCP/IP loopback and unix domain sockets can be used. Depending on theplatform, unix domain sockets can achieve around 50% more throughput thanthe TCP/IP loopback (on Linux for instance). The default behavior ofredis-benchmark is to use the TCP/IP loopback.
f5d0e4f075