couchdb-erlang mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Алекс Zatvornitskiy <a.zatvornits...@gmail.com>
Subject Inactive memory issues
Date Thu, 07 Feb 2013 16:36:28 GMT
Hi There! First of all, thanks a ton for CouchDB )

I've couple of strange memory issues with R15B03 and couch db internals.
It'd be great to have a clearance for questions.

Let's consider short code snippet:

db_and_doc() ->
     {<<"seed_labeled_prod">>, <<"medianet:album:10000053">>}.

write(Body) ->
     {DbName, DocId} = db_and_doc(),
     {ok, Db} = couch_db:open_int(DbName, []),
     couch_db:update_doc(Db, Body, []),
     couch_db:close(Db).

read() ->
     {DbName, DocId} = db_and_doc(),
     {ok, Db} = couch_db:open_int(DbName, []),
     {ok, Doc} = couch_db:open_doc(Db, DocId),
     {Body} = couch_doc:to_json_obj(Doc, []),
     couch_db:close(Db),
     Body.


And few cases:


run(Scenario) ->
    spawn(fun() -> in_case(Scenario) end).

in_case(single_process) ->
     Seq = lists:seq(1, 30000),
     Try = fun(_) -> write(read()) end,
     lists:foreach(Try, Seq);

in_case(spawned_processes) ->
     Seq = lists:seq(1, 5000),
     Try = fun(_) ->
          spawn(fun() -> write(read()) end)
     end,
     lists:foreach(Try, Seq);

in_case(spawned_update_processes) ->
     Seq = lists:seq(1, 30000),
     Try = fun(_) ->
          Doc = read(),
          spawn(fun() -> write(Doc) end)
     end,
     lists:foreach(Try, Seq).


My questions are:

1] Why `in_case(single_process)` produces so many `inactive` memory on Mac
OS X in case when `<<"medianet:album:10000053">>` document size is 67.19Kb?;
-- besides, `in_case(spawned_processes)` doesn't;

2] moreover, `in_case(spawned_update_processes)` still continue produce an
`inactive` memory;

I think that Linux env has same behavior.

Thanks for help!)

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message