From 44c8f92a8c2f7b68ba1779ba5c7bfd63d725ee2f Mon Sep 17 00:00:00 2001 From: Dmitry Kolesnikov Date: Sat, 27 Jul 2013 18:28:26 +0300 Subject: [PATCH] release 0.8.0 - re-factored cache bucket structure. The application uses segmented cache approach vs B-tree index for TTL handling --- LICENSE | 202 ++++++++++++++++++++++++++++++++++++++++ Makefile | 20 +++- README.md | 80 ++++++++++++++++ distributed.png | Bin 0 -> 102142 bytes local.png | Bin 0 -> 109267 bytes priv/cache.benchmark | 5 +- src/cache.app.src | 3 +- src/cache.erl | 124 ++++++++++++++++-------- src/cache.hrl | 18 +++- src/cache_app.erl | 26 +++--- src/cache_benchmark.erl | 39 ++++---- src/cache_bucket.erl | 113 +++++++++++----------- src/cache_sup.erl | 26 +++--- src/cache_util.erl | 49 +++++----- 14 files changed, 521 insertions(+), 184 deletions(-) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 distributed.png create mode 100644 local.png diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Makefile b/Makefile index 3293500..7f70fe7 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,17 @@ .PHONY: deps test +ifeq ($(id),) +export id=cache +endif + +FLAGS=\ + -name ${id}@127.0.0.1 \ + -setcookie nocookie \ + -pa ./deps/*/ebin \ + -pa ./examples/*/ebin \ + -pa ./ebin \ + +K true +A 160 -sbt ts + BB=../basho_bench all: rebar deps compile @@ -27,15 +39,19 @@ dialyzer: compile @dialyzer -Wno_return -c ./ebin run: - erl -name cache@127.0.0.1 -setcookie nocookie -pa ./deps/*/ebin -pa ./ebin + erl ${FLAGS} rebar: curl -O http://cloud.github.com/downloads/basho/rebar/rebar chmod ugo+x rebar benchmark: - $(BB)/basho_bench priv/cache.benchmark + $(BB)/basho_bench -N bb@127.0.0.0 -C nocookie -J ${id}@127.0.0.1 priv/${id}.benchmark $(BB)/priv/summary.r -i tests/current open tests/current/summary.png +# benchmark: +# $(BB)/basho_bench -N bb@127.0.0.0 -C nocookie -J ${id}@127.0.0.1 priv/${id}.benchmark +# $(BB)/priv/summary.r -i tests/current +# open tests/current/summary.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..f95e7f1 --- /dev/null +++ b/README.md @@ -0,0 +1,80 @@ +# Segmented in-memory cache + +Cache uses N disposable ETS tables instead of single one. The cache applies eviction and quota +policies at segment level. The oldest ETS table is destroyed and new one is created when +quota or TTL criteria are exceeded. + +The write operation always uses youngest segment. The read operation lookup key from youngest to oldest table +until it is found same time key is moved to youngest segment to prolong TTL. If none of ETS table contains key +then cache-miss occurs. + +The downside is inability to assign precise TTL per single cache entry. TTL is always approximated to nearest segment. (e.g. cache with 60 sec TTL and 10 segments has 6 sec accuracy on TTL) + + + +## Usage + +```erlang + application:start(cache). + {ok, _} = cache:start_link(my_cache, [{n, 10}, {ttl, 60}]). + + ok = cache:put(my_cache, <<"my key">>, <<"my value">>). + Val = cache:get(my_cache, <<"my key">>). +``` + +### configuration via Erlang `sys.config` + +The cache instances are configurable via `sys.config`. Theses cache instances are supervised by application +supervisor. + +```erlang +{cache, [ + {my_cache, [{n, 10}, {ttl, 60}]} +]} +``` + +### distributed environment + +The cache application uses standard Erlang distribution model. +Please node that Erlang distribution uses single tcp/ip connection for message passing between nodes. +Therefore, frequent read/write of large entries might impact on overall Erlang performance. + + +The global cache instance is visible to all Erlang nodes in the cluster. +```erlang + %% at a@example.com + {ok, _} = cache:start_link({global, my_cache}, [{n, 10}, {ttl, 60}]). + Val = cache:get({global, my_cache}, <<"my key">>). + + %% at b@example.com + ok = cache:put({global, my_cache}, <<"my key">>, <<"my value">>). + Val = cache:get({global, my_cache}, <<"my key">>). +``` + +The local cache instance is accessible for any Erlang nodes in the cluster. + +```erlang + %% a@example.com + {ok, _} = cache:start_link(my_cache, [{n, 10}, {ttl, 60}]). + Val = cache:get(my_cache, <<"my key">>). + + %% b@example.com + ok = cache:put({my_cache, 'a@example.com'}, <<"my key">>, <<"my value">>). + Val = cache:get({my_cache, 'a@example.com'}, <<"my key">>). +``` + + +## Performance + + MacBook Pro, Intel Core i5, 2.5GHz, 8GB 1600 MHz DDR3, 256 SSD + LRU Cache, 10 segments, 20 sec ttl (~2 sec per segment) + + ![Local cache (application and cache within same VM)](local.png) + ![Distributed cache (application and cache runs in different VMs)](distributed.png) + +## Contributors + * Jose Luis Navarro https://github.com/artefactop + * Valentin Micic + + + diff --git a/distributed.png b/distributed.png new file mode 100644 index 0000000000000000000000000000000000000000..40e10e779cc47c5831f94487ad3916032812e477 GIT binary patch literal 102142 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®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 F{{g;XMD+jw literal 0 HcmV?d00001 diff --git a/local.png b/local.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc958169a69319cee8e6d876b3786527c4e1282 GIT binary patch literal 109267 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 W1x!3#f&U+A<(pFg literal 0 HcmV?d00001 diff --git a/priv/cache.benchmark b/priv/cache.benchmark index 4133f02..5011ead 100644 --- a/priv/cache.benchmark +++ b/priv/cache.benchmark @@ -6,7 +6,7 @@ %% %% workload {mode, max}. -{duration, 1}. +{duration, 5}. {concurrent, 10}. {key_generator, {uniform_int, 1000000}}. {value_generator, {fixed_bin, 1000}}. @@ -14,7 +14,6 @@ {operations, [ {put, 5} ,{get, 5} - %,{remove, 1} ]}. %{cache, {mycache, 'cache@127.0.0.1'}}. @@ -22,6 +21,4 @@ {ttl, 20} ,{n, 10} ,{policy, lru} - %,{size, 500000} - %,{memory, 400000000} ]}. diff --git a/src/cache.app.src b/src/cache.app.src index 56479ba..91d186d 100644 --- a/src/cache.app.src +++ b/src/cache.app.src @@ -1,9 +1,10 @@ {application, cache, [ {description, "in-memory cache"}, - {vsn, "0.3.0"}, + {vsn, "0.8.0"}, {modules, [ cache, + cache_bucket, cache_sup, cache_app ]}, diff --git a/src/cache.erl b/src/cache.erl index 95c06a5..174ea12 100644 --- a/src/cache.erl +++ b/src/cache.erl @@ -1,32 +1,41 @@ %% -%% Copyright (c) 2012, Dmitry Kolesnikov -%% All Rights Reserved. +%% Copyright 2012 Dmitry Kolesnikov, All Rights Reserved %% -%% This library is free software; you can redistribute it and/or modify -%% it under the terms of the GNU Lesser General Public License, version 3.0 -%% as published by the Free Software Foundation (the "License"). +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at %% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% You should have received a copy of the GNU Lesser General Public -%% License along with this library; if not, write to the Free Software -%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -%% USA or retrieve online http://www.opensource.org/licenses/lgpl-3.0.html +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. %% %% @description -%% segmented in-memory cache, cache memory is split into N segments, -%% each segment is associated with quota and ttl, eviction policy applied -%% at segment level. +%% segmented in-memory cache +%% * cache memory is split into N segments +%% * cache applies eviction and quota policies at segment level +%% (e.g. whole segments is destroyed at time) +%% * cache add new items to youngest segment +%% * cache lookup items from youngest to oldest segment +%% +%% @todo +%% * unit tests (improve coverage) +%% * cache read/write through handler +%% * cache atomic update (in-place update) +%% * memcached protocol -module(cache). +-author('Dmitry Kolesnikov '). + -include("cache.hrl"). -export([ start_link/2, drop/1, i/1, + i/2, heap/2, put/3, put/4, @@ -40,45 +49,72 @@ remove_/2 ]). +-export_type([cache/0]). + +-type(cache() :: atom() | {atom(), atom()} | {global, atom()} | pid()). +-type(name() :: atom() | {global, atom()}). -type(key() :: any()). -type(entity() :: any()). -type(ttl() :: integer()). %% -%% start new cache --spec(start_link/2 :: (atom(), list()) -> {ok, pid()} | {error, any()}). +%% start new cache bucket, accepted options: +%% {policy, lru | mru} - cache eviction policy +%% {memory, integer()} - cache memory quota in bytes +%% {size, integer()} - cache cardinality quota +%% {n, integer()} - number of cache segments +%% {ttl, integer()} - default time-to-live in seconds +%% {quota, integer()} - frequency of quota check in seconds +%% {stats, function() | {Mod, Fun}} - cache statistic aggregate functor +-spec(start_link/2 :: (name(), list()) -> {ok, pid()} | {error, any()}). start_link(Cache, Opts) -> cache_bucket:start_link(Cache, Opts). %% %% drop cache --spec(drop/1 :: (atom()) -> ok). +-spec(drop/1 :: (cache()) -> ok). -drop(Cache) -> - erlang:exit(whereis(Cache), shutdown). +drop(undefined) -> + ok; +drop({global, Cache}) -> + drop(global:whereis_name(Cache)); +drop({Cache, Node}) -> + drop(rpc:call(Node, cache, drop, [Cache])); +drop(Cache) + when is_atom(Cache) -> + drop(whereis(Cache)); +drop(Cache) + when is_pid(Cache) -> + erlang:exit(Cache, shutdown). %% %% return cache meta data --spec(i/1 :: (atom()) -> list()). +%% {heap, [integer()]} - cache segments references +%% {expire, [integer()]} - cache segments expire times +%% {size, [integer()]} - cardinality of cache segments +%% {memory, [integer()]} - memory occupied by each cache segment +-spec(i/1 :: (cache()) -> list()). +-spec(i/2 :: (cache(), atom()) -> list()). i(Cache) -> gen_server:call(Cache, i). +i(Cache, Name) -> + proplists:get_value(Name, i(Cache)). + %% -%% return nth cache heap --spec(heap/2 :: (atom(), integer()) -> integer() | badarg). +%% return nth cache segment (e.g. heap(..., 1) returns youngest segment) +-spec(heap/2 :: (cache(), integer()) -> integer() | badarg). heap(Cache, N) -> gen_server:call(Cache, {heap, N}). %% -%% put entity to cache --spec(put/3 :: (atom(), key(), entity()) -> ok). --spec(put_/3 :: (atom(), key(), entity()) -> ok). --spec(put/4 :: (atom(), key(), entity(), ttl()) -> ok). --spec(put_/4 :: (atom(), key(), entity(), ttl()) -> ok). +%% synchronous cache put +-spec(put/3 :: (cache(), key(), entity()) -> ok). +-spec(put/4 :: (cache(), key(), entity(), ttl()) -> ok). put(Cache, Key, Val) -> gen_server:call(Cache, {put, Key, Val}, ?DEF_CACHE_TIMEOUT). @@ -86,6 +122,11 @@ put(Cache, Key, Val) -> put(Cache, Key, Val, TTL) -> gen_server:call(Cache, {put, Key, Val, TTL}, ?DEF_CACHE_TIMEOUT). +%% +%% asynchronous cache put +-spec(put_/3 :: (cache(), key(), entity()) -> ok). +-spec(put_/4 :: (cache(), key(), entity(), ttl()) -> ok). + put_(Cache, Key, Val) -> gen_server:cast(Cache, {put, Key, Val}). @@ -93,41 +134,44 @@ put_(Cache, Key, Val, TTL) -> gen_server:cast(Cache, {put, Key, Val, TTL}). %% -%% get entity from cache, prolong ttl --spec(get/2 :: (atom(), key()) -> entity() | undefined). +%% synchronous get cache entry, the operation prolongs entry ttl +-spec(get/2 :: (cache(), key()) -> entity() | undefined). get(Cache, Key) -> gen_server:call(Cache, {get, Key}, ?DEF_CACHE_TIMEOUT). %% -%% lookup entity at cache do not prolong ttl --spec(lookup/2 :: (atom(), key()) -> entity() | undefined). +%% synchronous lookup cache entry, the operation do not prolong entry ttl +-spec(lookup/2 :: (cache(), key()) -> entity() | undefined). lookup(Cache, Key) -> gen_server:call(Cache, {lookup, Key}, ?DEF_CACHE_TIMEOUT). %% -%% check entity at cache --spec(has/2 :: (atom(), key()) -> true | false). +%% check if cache key exists, +-spec(has/2 :: (cache(), key()) -> true | false). has(Cache, Key) -> gen_server:call(Cache, {has, Key}, ?DEF_CACHE_TIMEOUT). %% %% check entity at cache and return estimated ttl --spec(ttl/2 :: (atom(), key()) -> ttl() | false). +-spec(ttl/2 :: (cache(), key()) -> ttl() | false). ttl(Cache, Key) -> gen_server:call(Cache, {ttl, Key}, ?DEF_CACHE_TIMEOUT). %% -%% remove entity from cache --spec(remove/2 :: (atom(), key()) -> ok). --spec(remove_/2 :: (atom(), key()) -> ok). +%% synchronous remove entry from cache +-spec(remove/2 :: (cache(), key()) -> ok). remove(Cache, Key) -> gen_server:call(Cache, {remove, Key}, ?DEF_CACHE_TIMEOUT). +%% +%% asynchronous remove entry from cache +-spec(remove_/2 :: (cache(), key()) -> ok). + remove_(Cache, Key) -> gen_server:cast(Cache, {remove, Key}). diff --git a/src/cache.hrl b/src/cache.hrl index 8c1f721..c133627 100644 --- a/src/cache.hrl +++ b/src/cache.hrl @@ -1,4 +1,18 @@ - +%% +%% Copyright 2012 Dmitry Kolesnikov, All Rights Reserved +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% %-define(VERBOSE, true). -ifdef(VERBOSE). @@ -18,4 +32,4 @@ -define(DEF_CACHE_QUOTA, 5). %% default cache i/o timeout --define(DEF_CACHE_TIMEOUT, 60000). \ No newline at end of file +-define(DEF_CACHE_TIMEOUT, 60000). diff --git a/src/cache_app.erl b/src/cache_app.erl index 7e437a5..ee65bbf 100644 --- a/src/cache_app.erl +++ b/src/cache_app.erl @@ -1,22 +1,20 @@ %% -%% Copyright (c) 2012, Dmitry Kolesnikov -%% All Rights Reserved. +%% Copyright 2012 Dmitry Kolesnikov, All Rights Reserved %% -%% This library is free software; you can redistribute it and/or modify -%% it under the terms of the GNU Lesser General Public License, version 3.0 -%% as published by the Free Software Foundation (the "License"). +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at %% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% You should have received a copy of the GNU Lesser General Public -%% License along with this library; if not, write to the Free Software -%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -%% USA or retrieve online http://www.opensource.org/licenses/lgpl-3.0.html +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. %% %% @description +%% cache application -module(cache_app). -behaviour(application). -author('Dmitry Kolesnikov '). diff --git a/src/cache_benchmark.erl b/src/cache_benchmark.erl index 9151d4c..4a49127 100644 --- a/src/cache_benchmark.erl +++ b/src/cache_benchmark.erl @@ -1,28 +1,24 @@ %% -%% Copyright (c) 2012, Dmitry Kolesnikov -%% All Rights Reserved. +%% Copyright 2012 Dmitry Kolesnikov, All Rights Reserved %% -%% This library is free software; you can redistribute it and/or modify -%% it under the terms of the GNU Lesser General Public License, version 3.0 -%% as published by the Free Software Foundation (the "License"). +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at %% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% You should have received a copy of the GNU Lesser General Public -%% License along with this library; if not, write to the Free Software -%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -%% USA or retrieve online http://www.opensource.org/licenses/lgpl-3.0.html +%% http://www.apache.org/licenses/LICENSE-2.0 %% -%% @description -%% basho_bench driver +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% @description +%% cache basho_bench driver -module(cache_benchmark). +-author('Dmitry Kolesnikov '). --export([ - new/1, run/4 -]). +-export([new/1, run/4]). %% %% @@ -76,7 +72,6 @@ local_init() -> %% %% -failure(Tag, _Key, E) -> - %io:format("----> ~p~n", [process_info(pns:whereis(kv, Key))]), - io:format("~s -> ~p~n", [Tag, E]), +failure(_Tag, _Key, _E) -> + %io:format("~s -> ~p~n", [Tag, E]), failed. diff --git a/src/cache_bucket.erl b/src/cache_bucket.erl index d60fbdd..7c24482 100644 --- a/src/cache_bucket.erl +++ b/src/cache_bucket.erl @@ -1,52 +1,55 @@ %% -%% Copyright (c) 2012, Dmitry Kolesnikov -%% All Rights Reserved. +%% Copyright 2012 Dmitry Kolesnikov, All Rights Reserved %% -%% This library is free software; you can redistribute it and/or modify -%% it under the terms of the GNU Lesser General Public License, version 3.0 -%% as published by the Free Software Foundation (the "License"). +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at %% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% You should have received a copy of the GNU Lesser General Public -%% License along with this library; if not, write to the Free Software -%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -%% USA or retrieve online http://www.opensource.org/licenses/lgpl-3.0.html +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. %% %% @description -%% +%% cache bucket process -module(cache_bucket). -behaviour(gen_server). -author('Dmitry Kolesnikov '). + -include("cache.hrl"). -export([ start_link/2, - init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3 + init/1, + terminate/2, + handle_call/3, + handle_cast/2, + handle_info/2, + code_change/3 ]). -%% -%% +%% internal bucket state -record(cache, { - name :: atom(), %% name of cache bucket - heap = [] :: list(), %% cache heap segments + name = undefined :: atom(), %% name of cache bucket + heap = [] :: list(), %% cache heap segments n = ?DEF_CACHE_N :: integer(), %% number of segments - ttl = ?DEF_CACHE_TTL :: integer(), %% chunk time to live + ttl = ?DEF_CACHE_TTL :: integer(), %% cache time to live policy = ?DEF_CACHE_POLICY :: integer(), %% eviction policy - cardinality :: integer(), %% cache cardinality - memory :: integer(), %% cache memory limit + cardinality = undefined :: integer(), %% cache cardinality + memory = undefined :: integer(), %% cache memory limit quota = ?DEF_CACHE_QUOTA :: integer(), %% quota enforcement timer evict = undefined, %% evict timer - stats :: any() %% stats functor + stats = undefined :: any() %% stats aggregation functor }). +%% cache segment -record(heap, { id :: integer(), %% segment heap expire :: integer(), %% segment expire time @@ -54,8 +57,12 @@ memory :: integer() %% segment memory quota }). -%% -%% +%%%---------------------------------------------------------------------------- +%%% +%%% Factory +%%% +%%%---------------------------------------------------------------------------- + start_link({global, Name}, Opts) -> gen_server:start_link({global, Name}, ?MODULE, [Name, Opts], []); @@ -90,7 +97,7 @@ init([_ | Opts], S) -> init(Opts, S); init([], S) -> - random:seed(erlang:now()), + random:seed(os:timestamp()), Evict = cache_util:mdiv(S#cache.ttl, S#cache.n), init_heap( S#cache{ @@ -102,7 +109,6 @@ init([], S) -> %% %% terminate(_Reason, _S) -> - %cache_heap:free(S#cache.heap), ok. %%%---------------------------------------------------------------------------- @@ -164,6 +170,8 @@ handle_cast({remove, Key}, S) -> handle_cast(_, S) -> {noreply, S}. +%% +%% handle_info(evict, S) -> Now = cache_util:now(), case lists:last(S#cache.heap) of @@ -188,13 +196,13 @@ handle_info(quota, S) -> N when N =:= S#cache.n -> {noreply, free_heap( - S#cache{quota = cache_util:timeout(S#cache.evict, quota)} + S#cache{quota = cache_util:timeout(S#cache.quota, quota)} ) }; _ -> {noreply, init_heap( - S#cache{quota = cache_util:timeout(S#cache.evict, quota)} + S#cache{quota = cache_util:timeout(S#cache.quota, quota)} ) } end; @@ -234,8 +242,8 @@ cache_put(Key, Val, #cache{}=S) -> ?DEBUG("cache ~p: put ~p to heap ~p~n", [S#cache.name, Key, Head#heap.id]), S. -cache_put(Key, Val, Time, #cache{}=S) -> - case lists:splitwith(fun(X) -> X#heap.expire > Time end, S#cache.heap) of +cache_put(Key, Val, Expire, #cache{}=S) -> + case lists:splitwith(fun(X) -> X#heap.expire > Expire end, S#cache.heap) of {[], _Tail} -> cache_put(Key, Val, S); {Head, Tail} -> @@ -250,18 +258,13 @@ cache_put(Key, Val, Time, #cache{}=S) -> S end. +%% +%% get cache value cache_get(Key, #cache{policy=mru}=S) -> + % cache MRU should not move key anywhere because % cache always evicts last generation - % MRU caches do not prolong recently used entity - case heap_lookup(Key, S#cache.heap) of - undefined -> - cache_util:stats(S#cache.stats, {cache, S#cache.name, miss}), - undefined; - {_Heap, Val} -> - ?DEBUG("cache ~p: get ~p at cell ~p~n", [S#cache.name, Key, Heap#heap.id]), - cache_util:stats(S#cache.stats, {cache, S#cache.name, hit}), - Val - end; + % fall-back to cache lookup + cache_lookup(Key, S); cache_get(Key, #cache{}=S) -> Head = hd(S#cache.heap), @@ -281,6 +284,8 @@ cache_get(Key, #cache{}=S) -> Val end. +%% +%% lookup cache value cache_lookup(Key, #cache{}=S) -> case heap_lookup(Key, S#cache.heap) of undefined -> @@ -292,6 +297,8 @@ cache_lookup(Key, #cache{}=S) -> Val end. +%% +%% check if key exists cache_has(Key, #cache{}=S) -> case heap_has(Key, S#cache.heap) of false -> @@ -301,6 +308,8 @@ cache_has(Key, #cache{}=S) -> true end. +%% +%% check key ttl cache_ttl(Key, #cache{}=S) -> case heap_has(Key, S#cache.heap) of false -> @@ -309,6 +318,8 @@ cache_ttl(Key, #cache{}=S) -> Heap#heap.expire - cache_util:now() end. +%% +%% cache_remove(Key, #cache{}=S) -> lists:foreach( fun(X) -> ets:delete(X#heap.id, Key) end, @@ -341,22 +352,6 @@ heap_has(_Key, []) -> false. -% %% -% %% -% remove(Key, S) -> -% Cell = evict_key(Key, cache_heap:cells(S#cache.heap)), -% ?DEBUG("cache ~p: remove ~p in cell ~p~n", [S#cache.name, Key, Cell]), -% S. - -% %% -% %% -% member(Key, S) -> -% dowhile( -% fun(X) -> ets:member(X, Key) end, -% cache_heap:cells(S#cache.heap) -% ). - - %% %% init cache heap init_heap(#cache{}=S) -> @@ -387,7 +382,7 @@ free_heap(#cache{}=S) -> ). %% -%% +%% heap policy check is_heap_out_of_quota(#heap{}=H) -> is_out_of_memory(H) orelse is_out_of_capacity(H). diff --git a/src/cache_sup.erl b/src/cache_sup.erl index 90da62e..38a0e4a 100644 --- a/src/cache_sup.erl +++ b/src/cache_sup.erl @@ -1,25 +1,23 @@ %% -%% Copyright (c) 2012, Dmitry Kolesnikov -%% All Rights Reserved. +%% Copyright 2012 Dmitry Kolesnikov, All Rights Reserved %% -%% This library is free software; you can redistribute it and/or modify -%% it under the terms of the GNU Lesser General Public License, version 3.0 -%% as published by the Free Software Foundation (the "License"). +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at %% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% You should have received a copy of the GNU Lesser General Public -%% License along with this library; if not, write to the Free Software -%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -%% USA or retrieve online http://www.opensource.org/licenses/lgpl-3.0.html +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. %% %% @description %% root cache supervisor -module(cache_sup). -behaviour(supervisor). +-author('Dmitry Kolesnikov '). -export([start_link/0, init/1]). diff --git a/src/cache_util.erl b/src/cache_util.erl index 75b6b60..a2782a6 100644 --- a/src/cache_util.erl +++ b/src/cache_util.erl @@ -1,23 +1,20 @@ %% -%% Copyright (c) 2012, Dmitry Kolesnikov -%% All Rights Reserved. +%% Copyright 2012 Dmitry Kolesnikov, All Rights Reserved %% -%% This library is free software; you can redistribute it and/or modify -%% it under the terms of the GNU Lesser General Public License, version 3.0 -%% as published by the Free Software Foundation (the "License"). +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at %% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% You should have received a copy of the GNU Lesser General Public -%% License along with this library; if not, write to the Free Software -%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -%% USA or retrieve online http://www.opensource.org/licenses/lgpl-3.0.html +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. %% %% @description -%% +%% cache utility -module(cache_util). -export([ @@ -25,31 +22,33 @@ ]). %% -%% -mdiv(undefined, _) -> +%% maybe div +mdiv(X, Y) + when X =:= undefined orelse Y =:= undefined -> undefined; mdiv(X, Y) -> X div Y. %% -%% -madd(undefined, _) -> +%% maybe add +madd(X, Y) + when X =:= undefined orelse Y =:= undefined -> undefined; madd(X, Y) -> X + Y. %% -%% -mmul(undefined, _) -> +%% maybe multiply +mmul(X, Y) + when X =:= undefined orelse Y =:= undefined -> undefined; mmul(X, Y) -> X * Y. - %% %% now() -> - {Mega, Sec, _} = erlang:now(), + {Mega, Sec, _} = os:timestamp(), Mega * 1000000 + Sec. %% @@ -71,9 +70,7 @@ stats(Fun, Counter, Val) Fun(Counter, Val). %% -%% -%% -%% re-set alarm after time +%% set / reset timeout timeout(T, Msg) when is_integer(T) -> {clock, T, erlang:send_after(T, self(), Msg)};