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 Thu, 07 Feb 2013 18:04:21 GMT
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