couchdb-erlang mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Алекс Zatvornitskiy <a.zatvornits...@gmail.com>
Subject Re: Inactive memory issues
Date Sat, 09 Feb 2013 15:49:14 GMT
#Closed. Reproduced only on OS X environments. Linux reduces a memory for
all available cases as need it.


On Thu, Feb 7, 2013 at 8:04 PM, Алекс Zatvornitskiy <
a.zatvornitskiy@gmail.com> wrote:

> Here worked example. https://gist.github.com/AZatvornitskiy/4732830(simple_couch_db_doc_behavior.erl)
>
>
> On Thu, Feb 7, 2013 at 6:58 PM, Алекс Zatvornitskiy <
> a.zatvornitskiy@gmail.com> wrote:
>
>> +1 ) I don't think that `gdb` will give me answers. I've not had enough
>> knowledge about `couch_db`, `couch_doc` modules.
>>
>>
>> On Thu, Feb 7, 2013 at 6:42 PM, Paul Davis <paul.joseph.davis@gmail.com>wrote:
>>
>>> I'm confused by what's generating the inactive memory messages. Some
>>> sort of Erlang tracing?
>>>
>>> On Thu, Feb 7, 2013 at 10:36 AM, Алекс Zatvornitskiy
>>> <a.zatvornitskiy@gmail.com> wrote:
>>> > 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