Difference between revisions of "Performance/Meetings/2010 05"
(Created page with '{{Performance}} ==Performance/Meetings/2010/05/28== Meeting Minutes<br> IRC Meeting of ORACLE with RedOffice<br> Performance Project<br> -----------------------------------------…') |
(→Performance/Meetings/2010/05/28) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
Agenda:<br><br> | Agenda:<br><br> | ||
− | + | <mhu>Hi all, sorry for being late<br> | |
+ | <kuangliang>hi ,mhu<br> | ||
+ | <liangjun>hi ,mhu :)<br> | ||
+ | <LiHeng>hi, all sorry I'm being late<br> | ||
+ | <mhu>well, I guess you were earlier than me, don't worry<br> | ||
+ | <LiHeng>maybe in same time :)<br> | ||
+ | <LiHeng>Let's update our status<br> | ||
+ | <kuangliang>I'm analysising sd load document process, I want to realize load a blank page sd doc,and hold the filter, | ||
+ | <kuangliang>when display page call filter load page content<br> | ||
+ | <mhu>kuangliang: can explain in other words, what you are analyzing ?<br> | ||
+ | <LiHeng>My status0:Working on new filter of presentation with kuangliang and to process the media object(audio or video) to be pushed into the file.<br> | ||
+ | <mhu>s/can explain/can you please explain/<br> | ||
+ | <yujinliang>My status: I was studying, when the quickstart has been run, start the IPC as soon as possible for reducing ooo start-up time<br> | ||
+ | <LiHeng>mhu: we (kuangliang and I) do same work, when I work out the new filter, it need a little change in sd::Document, that can fire the event to reload all objects in a page<br> | ||
+ | <kuangliang>so we must understand sd load document process<br> | ||
+ | <kuangliang>I learn about sd load docment's process<br> | ||
+ | <mhu>LiHeng, kuangliang: ah yes, understood<br> | ||
+ | <LiHeng>My status1: Planning and submitting the papers of Conf2010, I think must finish the summaries before next Tuesday.<br> | ||
+ | <mhu>yes, please dont forget to submit your presentation abstracts until Tuesday<br> | ||
+ | <mhu>...the Hamburg team is also preparing to submit their abstracts.<br> | ||
+ | <LiHeng>mhu:Is it a little presentation or a text document?<br> | ||
+ | <mhu>I think, it is only a text abstract<br> | ||
+ | <mhu>that may even be (I believe) ascii text posted into a web form, isnt it?<br> | ||
+ | <LiHeng>I saw a field on the webpage named "abstracts" I think that is it.<br> | ||
+ | <mhu>yes, that is what I mean<br> | ||
+ | <LiHeng>Thanks :) I remember this.<br> | ||
+ | <mhu>okay<br> | ||
+ | <LiHeng>okay, that's all for me.<br> | ||
+ | <mhu>I also have not more; I think the mutex synchronization issues are better discussed using the wiki page (looks good) and email; perhaps we again include Kay Ramme into the discussion.<br> | ||
+ | <LiHeng>Absolutely yes!<br> | ||
+ | <mhu>in the wiki (...parallel mutex...), I think the analysis section is good (leading to dead lock / serial execution), but I do not yet understand the proposed solution; lets do that in email ?<br> | ||
+ | <LiHeng>Okay, we can talk more and more about the solution in email<br> | ||
+ | <mhu>okay, will do<br> | ||
+ | <mhu>then see you next friday, have a good weekend, bye all<br> | ||
+ | <LiHeng>Bye and nice weekend ;)<br> | ||
+ | <liangjun>Bye and nice weekend ;)<br> | ||
+ | <yujinliang>bye all nice weeken<br> | ||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
+ | |||
==Performance/Meetings/2010/05/21== | ==Performance/Meetings/2010/05/21== | ||
Meeting Minutes<br> | Meeting Minutes<br> | ||
Line 20: | Line 57: | ||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
Agenda:<br><br> | Agenda:<br><br> | ||
− | + | <LiHeng>hi,what's up?<br> | |
+ | <yujinliang>hi<br> | ||
+ | <liangjun>hi<br> | ||
+ | <LiHeng>hi,all<br> | ||
+ | <LiHeng>waiting for mhu<br> | ||
+ | <liangjun>:)<br> | ||
+ | <yujinliang>:-D<br> | ||
+ | <mhu>Hi all, sorry for being late<br> | ||
+ | <LiHeng>hi mhu<br> | ||
+ | <LiHeng>Don't mind<br> | ||
+ | <LiHeng>let's update our status<br> | ||
+ | <liangjun>hi mhu :)<br> | ||
+ | <yujinliang>hi mhu<br> | ||
+ | <mhu>hi all<br> | ||
+ | <mhu>liangjun: in your email to Kay Ramme, you again talked about things not thread-safe in Uno. I think I still don't understand what you mean. Can you explain, what exactly you found to be not thread safe, please ?<br> | ||
+ | <liangjun>my status: I had update the cws and then loadofd can package on windows.<br> | ||
+ | <LiHeng>My status:I am working the extension of new sd-filter that can load specified part of a document, to make partly load simple<br> | ||
+ | <mhu>okay, that is good. So, someone (me) can look at that cws (loadofd).<br> | ||
+ | <yujinliang>My status: now i major on fixing redoffice and trying to fix some openoffice bugs, such as issue108805 | ||
+ | <liangjun>mhu: my mean is the memory and base data struct are not thread safe. :) and I try to make it will be thread safe .<br> | ||
+ | <mhu>which memory, and base data struct do you mean ?<br> | ||
+ | <mhu>... that is a very general statement, I think<br> | ||
+ | <liangjun>rtl_allocmemory.<br> | ||
+ | <mhu>well, rtl_allocMemory() *is* thread-safe.<br> | ||
+ | <mhu>...can you explain in more detail, what does not work for you ?<br> | ||
+ | <liangjun>mhu: okey<br> | ||
+ | <mhu>... there may of course always be undiscovered bugs<br> | ||
+ | <liangjun>http://wiki.services.openoffice.org/wiki/Performance/load_performance_implement_parallel_mutex<br> | ||
+ | <mhu>liangjun: please give me some time, to read that in detail. I just skipped over it. But, there is definitely no need to protect memory allocation and refcounting with external mutex, they are already thread-safe internally by design.<br> | ||
+ | <liangjun>mhu: okey<br> | ||
+ | <mhu>I will read that page (and think about it) until next friday latest, maybe I answer via email.<br> | ||
+ | <mhu>just as a quick explanation: refcounting is done with osl_incrementInterlockedCount(), which is based (on x86) on the "LOCK XADD" processor instruction. You can look that up in the intel documentation. rtl_allocateMemory() uses an internal mutex, so that it can be called from many threads in parallel without problems (and without deadlocks).<br> | ||
+ | <LiHeng>Thanks<br> | ||
+ | <liangjun>mhu: thank you, okey. and I 'm fixing the detail on my computer( It is compiling , I can't get the result.)<br> | ||
+ | <mhu>okay<br> | ||
+ | <liangjun>mhu: I read it is thread safe, but I running the office it will error.<br> | ||
+ | <mhu>what error, when ? can you explain ?<br> | ||
+ | <liangjun>It is null point error.<br> | ||
+ | <mhu>oh, but what has that to do with thread safe or not ?<br> | ||
+ | <liangjun>So I add mutex on osl_incrementInterlockedCount and rtl_allocateMemory .<br> | ||
+ | <mhu>are you saying that you have two threads calling rtl_allocateMemory() in parallel and one returns with a null pointer ?<br> | ||
+ | <liangjun>and the tools::Container<br> | ||
+ | <liangjun>mhu: no<br> | ||
+ | <liangjun>I can't where are the null pointer<br> | ||
+ | <liangjun>I can't check where are the null pointer<br> | ||
+ | <mhu>can we leave out "high level" classes like tools:Container, and concentrate on rtl_allocateMemory() for the moment ?<br> | ||
+ | <liangjun>So I do it<br> | ||
+ | <mhu>okay, so it is not rtl_allocateMemory() that is failing, but some code using that memory, right ?<br> | ||
+ | <liangjun>mhu: yes I think so<br> | ||
+ | <mhu>access to the allocated memory of course needs to be protected.<br> | ||
+ | <liangjun>So I add the mutex on it.<br> | ||
+ | <mhu>you added a mutex to what ?<br> | ||
+ | <liangjun>to rtl_allocateMemory()<br> | ||
+ | <mhu>no, that must be wrong, as we just discussed<br> | ||
+ | <mhu>I guess, what you mean is some code like this ...<br> | ||
+ | <mhu>struct { mutex m_mutex; void * m_memory; }<br> | ||
+ | <liangjun>mhu: I know your mean<br> | ||
+ | <mhu>lock (s.m_mutex); s.m_memory = rtl_allocMem(); fill (s.m_memory); unlock (s.m_mutex);<br> | ||
+ | <mhu>so, what you protect is the logic accessing the memory, not the call to rtl_allocMemory()<br> | ||
+ | <mhu>another thread needs to do. ..<br> | ||
+ | <mhu>lock (s.m_mutex); s.m_memmory[7] = 42; unlock(s.m_mutex);<br> | ||
+ | <mhu>again, this has nothing to do with rtl_allocMemory<br> | ||
+ | <liangjun>void * SAL_CALL rtl_allocateMemory (sal_Size n)<br> | ||
+ | <liangjun>{<br> | ||
+ | <liangjun>void * pResult = NULL;<br> | ||
+ | <liangjun>osl_enterMemorySection();<br> | ||
+ | <liangjun>pResult = malloc (n);<br> | ||
+ | <liangjun>osl_leaveMemorySection();<br> | ||
+ | <liangjun>return pResult;<br> | ||
+ | <liangjun>}<br> | ||
+ | <mhu>no, that is completely useless, as it is already done that way.<br> | ||
+ | <mhu>and of course, malloc() itself is already thread-safe.<br> | ||
+ | <mhu>i.e. this is not needed at all<br> | ||
+ | <liangjun>mhu: oh<br> | ||
+ | <mhu>btw. what is osl_enter|leaveMemorySection() ? I dont know these functions ?<br> | ||
+ | <mhu>Enter|LeaveCriticalSection(LPCRITICALSECTION s) ?<br> | ||
+ | <mhu>your own invention ?<br> | ||
+ | <liangjun>mhu: yes, It like it<br> | ||
+ | <mhu>okay, but as I said, all of this is already done, either in rtl_allocateMemory() or in the std libc malloc() implementation.<br> | ||
+ | <mhu>and, believe me, I have implemented sal/rtl/source/alloc_global.c, alloc_cache.c and alloc_arena.c :-)<br> | ||
+ | <liangjun>mhu: okey, :)<br> | ||
+ | <mhu>there are very many threading problems in OOo, but just *not* in functions osl_incrementInterlockedCount() and rtl_allocateMemory(). these are probably the best examples of thread safe code :-)<br> | ||
+ | <liangjun>mhu: I think so, but there are all null pointer. So I do it . :)<br> | ||
+ | <mhu>then we probably need to find out where these null pointers come from; they cannot come directly from rtl_allocateMemory(), except you are out of memory already.<br> | ||
+ | <liangjun>yes<br> | ||
+ | <mhu>okay, I read your wiki page, and come back to you.<br> | ||
+ | <liangjun>tools::Container ? and svarray ?<br> | ||
+ | <mhu>they are not protected internally, but access to them need be protected externally.<br> | ||
+ | <liangjun>oh<br> | ||
+ | <mhu>...as with std::vector<T> et al.<br> | ||
+ | <mhu>...none of these basic containers (or strings for that matter, std::string) is protected internally. at least for performance reasons. access must always be synchronized externally.<br> | ||
+ | <liangjun>thank you.<br> | ||
+ | <mhu>...and to make life easy for "old" code, the "SolarMutex" was invented, protecting on a very coarse grain the "old" code.<br> | ||
+ | <mhu>...and everyone can assume that the "SolarMutex" is already hold when they are called.<br> | ||
+ | <mhu>but again, let me read your wiki page, first.<br> | ||
+ | <liangjun>:) okey.<br> | ||
+ | <mhu>...and now I am exhausted :-)<br> | ||
+ | <mhu>...and don't have more for today.<br> | ||
+ | <LiHeng>okay that's all today. Thanks<br> | ||
+ | <liangjun>:) Thanks you.<br> | ||
+ | <mhu>okay, see you next week. have a nice weekend, bye all<br> | ||
+ | <LiHeng>See you next week, have a nice weekend end. bye<br> | ||
+ | <liangjun>bye <br> | ||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
+ | |||
==Performance/Meetings/2010/05/07== | ==Performance/Meetings/2010/05/07== | ||
Meeting Minutes<br> | Meeting Minutes<br> | ||
Line 31: | Line 171: | ||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
Agenda:<br><br> | Agenda:<br><br> | ||
− | + | <mhu>Hi all<br> | |
+ | <yujinliang>hi<br> | ||
+ | <liangjun>mhu: hi<br> | ||
+ | <LiHeng>hi, mhu<br> | ||
+ | <mhu>Hi LiHeng, liangjun<br> | ||
+ | <LiHeng>Let's update our status<br> | ||
+ | <mhu>hi yujinliang<br> | ||
+ | <yujinliang>hi mhu<br> | ||
+ | <liangjun>mhu:LiHeng: these week, I'd update my source code to m77, and had update to http://hg.services.openoffice.org/cws/loadofd<br> | ||
+ | <mhu>liangjun: could you push your changes to hg.services... ? the server was down for most of the week, I thought.<br> | ||
+ | <LiHeng>My status:Update website of Benchmark-system to alert some information and number when performance has a big change<br> | ||
+ | <liangjun>mhu: yes ,I push my changes today. :)<br> | ||
+ | <mhu>liangjun: ah, okay, that explains it :-)<br> | ||
+ | <yujinliang>sorry , i must leave for some other things<br> | ||
+ | <LiHeng>My status 2: To work on partly loading, try to move my code into a import filter extension.<br> | ||
+ | <mhu>do you somehow synchronize your work of partly loading and parallel loading ?<br> | ||
+ | <liangjun>:) , now the source can compile. but now It has some warning.<br> | ||
+ | <mhu>liangjun: okay ... have you already tested your code ? (and can you fix the warnings ?)<br> | ||
+ | <LiHeng>Yujinliang need to change his station in our office, today. :)<br> | ||
+ | <liangjun>I'm fixing the error. It can't work right.<br> | ||
+ | <LiHeng>mhu: How about the help code of benchmark in tools?<br> | ||
+ | <mhu>liheng: good question, I'm sorry that I did not yet manage to actually review the code; as I said, I am somewhat busy with (internal sun/oracle integration) task, mainly and have not so much time left. But I will sometime look into it.<br> | ||
+ | <LiHeng>No problem, :), but I think I can work out some reports on OOo3.2 to test our system:)<br> | ||
+ | <liangjun>Sorry, I do't fix the synchronization of the ODF parallel load. and I don't know more other module.<br> | ||
+ | <liangjun>I can't know it is debug or designs error. I wish some helper and advise:). of couse I will try to find and fix the error.<br> | ||
+ | <LiHeng>Okay,that all for me. It's jumbled that many people need to change their station now.<br> | ||
+ | <mhu>liangjun: sorry, I was not clear: I was asking whether you and Li Heng sychronize the work that each of you do, one work on parallel loading, the other one on partial loading; do you have a common plan how the result of loading should look like?<br> | ||
+ | <mhu>liangjun: I try to look into loadofd cws, when I find some time, and see whether I can help to debug problems.<br> | ||
+ | <LiHeng>different respects of loading<br> | ||
+ | <LiHeng>zengliangjun has been working on parallel processing document object when a document loading<br> | ||
+ | <LiHeng>and I am working on partly loading , that a function can parse and process the document object that render functions need to get<br> | ||
+ | <mhu>LiHeng: yes, understood. you work on different aspects, but what happens when both your changes are integrated? i.e. both cws integrated, do we have partial and parallel loading then?<br> | ||
+ | <liangjun>mhu: thank you. I wish you can help me check my design is right or no. I do't finish the package and linux implement. So you can't debug directly.<br> | ||
+ | <mhu>liangjun: multithreading sometimes can be debuggged best with pencil and paper (i.e. check and verify the design)<br> | ||
+ | <mhu>...and with code reviews.<br> | ||
+ | <LiHeng>maybe both, but at first i think we can choose the better one to integrate into OOo<br> | ||
+ | <LiHeng>Because, parallel loading maybe have more advantages if we know which document objects need to be parallel :)<br> | ||
+ | <liangjun>LiHeng:mhu: Yes, I wish you can reviews my code simple. the implement is right or no :)<br> | ||
+ | <liangjun>It can't work right sometimes and error sometimes. :)<br> | ||
+ | <mhu>LiHeng: okay, understood. yes, maybe we first need to test the tow aspects, and decide then which is better. | ||
+ | <liangjun>It is the main thing is I can't find the problem, and fix it.<br> | ||
+ | <mhu>liangjun: I try to find / make some time for code reviews.<br> | ||
+ | <liangjun>mhu: thank you.<br> | ||
+ | <LiHeng>mhu: Thanks, you are very kind!<br> | ||
+ | <mhu>liangjun: you're welcome<br> | ||
+ | <liangjun>:)<br> | ||
+ | <mhu>okay, I also don't have more for today; except that we have a public holiday next Thursday, and I have a day vacation on Friday also. So, maybe we can have no meeting next week.<br> | ||
+ | <mhu>...so that I have a long weekend from Thursday to Sunday next week.<br> | ||
+ | <liangjun>Okay,that all for me.<br> | ||
+ | <mhu>LiHeng: so, shall we finish for today ?<br> | ||
+ | <liangjun>mhu: yes<br> | ||
+ | <mhu>liangjun: LiHeng already disconnected ?<br> | ||
+ | <liangjun>He maybe have some problems with network.<br> | ||
+ | <mhu>okay, then bye all, and have a nice weekend; see you in two weeks, May 21.<br> | ||
+ | <liangjun>okay :)<br> | ||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
[[Performance/Meetings|Go back]]<br> | [[Performance/Meetings|Go back]]<br> |
Latest revision as of 08:49, 5 July 2010
|
---|
Quick Navigation Team Communication Activities |
About this template |
Performance/Meetings/2010/05/28
Meeting Minutes
IRC Meeting of ORACLE with RedOffice
Performance Project
Date: 2010/05/28
Agenda:
<mhu>Hi all, sorry for being late
<kuangliang>hi ,mhu
<liangjun>hi ,mhu :)
<LiHeng>hi, all sorry I'm being late
<mhu>well, I guess you were earlier than me, don't worry
<LiHeng>maybe in same time :)
<LiHeng>Let's update our status
<kuangliang>I'm analysising sd load document process, I want to realize load a blank page sd doc,and hold the filter,
<kuangliang>when display page call filter load page content
<mhu>kuangliang: can explain in other words, what you are analyzing ?
<LiHeng>My status0:Working on new filter of presentation with kuangliang and to process the media object(audio or video) to be pushed into the file.
<mhu>s/can explain/can you please explain/
<yujinliang>My status: I was studying, when the quickstart has been run, start the IPC as soon as possible for reducing ooo start-up time
<LiHeng>mhu: we (kuangliang and I) do same work, when I work out the new filter, it need a little change in sd::Document, that can fire the event to reload all objects in a page
<kuangliang>so we must understand sd load document process
<kuangliang>I learn about sd load docment's process
<mhu>LiHeng, kuangliang: ah yes, understood
<LiHeng>My status1: Planning and submitting the papers of Conf2010, I think must finish the summaries before next Tuesday.
<mhu>yes, please dont forget to submit your presentation abstracts until Tuesday
<mhu>...the Hamburg team is also preparing to submit their abstracts.
<LiHeng>mhu:Is it a little presentation or a text document?
<mhu>I think, it is only a text abstract
<mhu>that may even be (I believe) ascii text posted into a web form, isnt it?
<LiHeng>I saw a field on the webpage named "abstracts" I think that is it.
<mhu>yes, that is what I mean
<LiHeng>Thanks :) I remember this.
<mhu>okay
<LiHeng>okay, that's all for me.
<mhu>I also have not more; I think the mutex synchronization issues are better discussed using the wiki page (looks good) and email; perhaps we again include Kay Ramme into the discussion.
<LiHeng>Absolutely yes!
<mhu>in the wiki (...parallel mutex...), I think the analysis section is good (leading to dead lock / serial execution), but I do not yet understand the proposed solution; lets do that in email ?
<LiHeng>Okay, we can talk more and more about the solution in email
<mhu>okay, will do
<mhu>then see you next friday, have a good weekend, bye all
<LiHeng>Bye and nice weekend ;)
<liangjun>Bye and nice weekend ;)
<yujinliang>bye all nice weeken
Performance/Meetings/2010/05/21
Meeting Minutes
IRC Meeting of ORACLE with RedOffice
Performance Project
Date: 2010/05/21
Agenda:
<LiHeng>hi,what's up?
<yujinliang>hi
<liangjun>hi
<LiHeng>hi,all
<LiHeng>waiting for mhu
<liangjun>:)
<yujinliang>:-D
<mhu>Hi all, sorry for being late
<LiHeng>hi mhu
<LiHeng>Don't mind
<LiHeng>let's update our status
<liangjun>hi mhu :)
<yujinliang>hi mhu
<mhu>hi all
<mhu>liangjun: in your email to Kay Ramme, you again talked about things not thread-safe in Uno. I think I still don't understand what you mean. Can you explain, what exactly you found to be not thread safe, please ?
<liangjun>my status: I had update the cws and then loadofd can package on windows.
<LiHeng>My status:I am working the extension of new sd-filter that can load specified part of a document, to make partly load simple
<mhu>okay, that is good. So, someone (me) can look at that cws (loadofd).
<yujinliang>My status: now i major on fixing redoffice and trying to fix some openoffice bugs, such as issue108805
<liangjun>mhu: my mean is the memory and base data struct are not thread safe. :) and I try to make it will be thread safe .
<mhu>which memory, and base data struct do you mean ?
<mhu>... that is a very general statement, I think
<liangjun>rtl_allocmemory.
<mhu>well, rtl_allocMemory() *is* thread-safe.
<mhu>...can you explain in more detail, what does not work for you ?
<liangjun>mhu: okey
<mhu>... there may of course always be undiscovered bugs
<liangjun>http://wiki.services.openoffice.org/wiki/Performance/load_performance_implement_parallel_mutex
<mhu>liangjun: please give me some time, to read that in detail. I just skipped over it. But, there is definitely no need to protect memory allocation and refcounting with external mutex, they are already thread-safe internally by design.
<liangjun>mhu: okey
<mhu>I will read that page (and think about it) until next friday latest, maybe I answer via email.
<mhu>just as a quick explanation: refcounting is done with osl_incrementInterlockedCount(), which is based (on x86) on the "LOCK XADD" processor instruction. You can look that up in the intel documentation. rtl_allocateMemory() uses an internal mutex, so that it can be called from many threads in parallel without problems (and without deadlocks).
<LiHeng>Thanks
<liangjun>mhu: thank you, okey. and I 'm fixing the detail on my computer( It is compiling , I can't get the result.)
<mhu>okay
<liangjun>mhu: I read it is thread safe, but I running the office it will error.
<mhu>what error, when ? can you explain ?
<liangjun>It is null point error.
<mhu>oh, but what has that to do with thread safe or not ?
<liangjun>So I add mutex on osl_incrementInterlockedCount and rtl_allocateMemory .
<mhu>are you saying that you have two threads calling rtl_allocateMemory() in parallel and one returns with a null pointer ?
<liangjun>and the tools::Container
<liangjun>mhu: no
<liangjun>I can't where are the null pointer
<liangjun>I can't check where are the null pointer
<mhu>can we leave out "high level" classes like tools:Container, and concentrate on rtl_allocateMemory() for the moment ?
<liangjun>So I do it
<mhu>okay, so it is not rtl_allocateMemory() that is failing, but some code using that memory, right ?
<liangjun>mhu: yes I think so
<mhu>access to the allocated memory of course needs to be protected.
<liangjun>So I add the mutex on it.
<mhu>you added a mutex to what ?
<liangjun>to rtl_allocateMemory()
<mhu>no, that must be wrong, as we just discussed
<mhu>I guess, what you mean is some code like this ...
<mhu>struct { mutex m_mutex; void * m_memory; }
<liangjun>mhu: I know your mean
<mhu>lock (s.m_mutex); s.m_memory = rtl_allocMem(); fill (s.m_memory); unlock (s.m_mutex);
<mhu>so, what you protect is the logic accessing the memory, not the call to rtl_allocMemory()
<mhu>another thread needs to do. ..
<mhu>lock (s.m_mutex); s.m_memmory[7] = 42; unlock(s.m_mutex);
<mhu>again, this has nothing to do with rtl_allocMemory
<liangjun>void * SAL_CALL rtl_allocateMemory (sal_Size n)
<liangjun>{
<liangjun>void * pResult = NULL;
<liangjun>osl_enterMemorySection();
<liangjun>pResult = malloc (n);
<liangjun>osl_leaveMemorySection();
<liangjun>return pResult;
<liangjun>}
<mhu>no, that is completely useless, as it is already done that way.
<mhu>and of course, malloc() itself is already thread-safe.
<mhu>i.e. this is not needed at all
<liangjun>mhu: oh
<mhu>btw. what is osl_enter|leaveMemorySection() ? I dont know these functions ?
<mhu>Enter|LeaveCriticalSection(LPCRITICALSECTION s) ?
<mhu>your own invention ?
<liangjun>mhu: yes, It like it
<mhu>okay, but as I said, all of this is already done, either in rtl_allocateMemory() or in the std libc malloc() implementation.
<mhu>and, believe me, I have implemented sal/rtl/source/alloc_global.c, alloc_cache.c and alloc_arena.c :-)
<liangjun>mhu: okey, :)
<mhu>there are very many threading problems in OOo, but just *not* in functions osl_incrementInterlockedCount() and rtl_allocateMemory(). these are probably the best examples of thread safe code :-)
<liangjun>mhu: I think so, but there are all null pointer. So I do it . :)
<mhu>then we probably need to find out where these null pointers come from; they cannot come directly from rtl_allocateMemory(), except you are out of memory already.
<liangjun>yes
<mhu>okay, I read your wiki page, and come back to you.
<liangjun>tools::Container ? and svarray ?
<mhu>they are not protected internally, but access to them need be protected externally.
<liangjun>oh
<mhu>...as with std::vector<T> et al.
<mhu>...none of these basic containers (or strings for that matter, std::string) is protected internally. at least for performance reasons. access must always be synchronized externally.
<liangjun>thank you.
<mhu>...and to make life easy for "old" code, the "SolarMutex" was invented, protecting on a very coarse grain the "old" code.
<mhu>...and everyone can assume that the "SolarMutex" is already hold when they are called.
<mhu>but again, let me read your wiki page, first.
<liangjun>:) okey.
<mhu>...and now I am exhausted :-)
<mhu>...and don't have more for today.
<LiHeng>okay that's all today. Thanks
<liangjun>:) Thanks you.
<mhu>okay, see you next week. have a nice weekend, bye all
<LiHeng>See you next week, have a nice weekend end. bye
<liangjun>bye
Performance/Meetings/2010/05/07
Meeting Minutes
IRC Meeting of ORACLE with RedOffice
Performance Project
Date: 2010/05/07
Agenda:
<mhu>Hi all
<yujinliang>hi
<liangjun>mhu: hi
<LiHeng>hi, mhu
<mhu>Hi LiHeng, liangjun
<LiHeng>Let's update our status
<mhu>hi yujinliang
<yujinliang>hi mhu
<liangjun>mhu:LiHeng: these week, I'd update my source code to m77, and had update to http://hg.services.openoffice.org/cws/loadofd
<mhu>liangjun: could you push your changes to hg.services... ? the server was down for most of the week, I thought.
<LiHeng>My status:Update website of Benchmark-system to alert some information and number when performance has a big change
<liangjun>mhu: yes ,I push my changes today. :)
<mhu>liangjun: ah, okay, that explains it :-)
<yujinliang>sorry , i must leave for some other things
<LiHeng>My status 2: To work on partly loading, try to move my code into a import filter extension.
<mhu>do you somehow synchronize your work of partly loading and parallel loading ?
<liangjun>:) , now the source can compile. but now It has some warning.
<mhu>liangjun: okay ... have you already tested your code ? (and can you fix the warnings ?)
<LiHeng>Yujinliang need to change his station in our office, today. :)
<liangjun>I'm fixing the error. It can't work right.
<LiHeng>mhu: How about the help code of benchmark in tools?
<mhu>liheng: good question, I'm sorry that I did not yet manage to actually review the code; as I said, I am somewhat busy with (internal sun/oracle integration) task, mainly and have not so much time left. But I will sometime look into it.
<LiHeng>No problem, :), but I think I can work out some reports on OOo3.2 to test our system:)
<liangjun>Sorry, I do't fix the synchronization of the ODF parallel load. and I don't know more other module.
<liangjun>I can't know it is debug or designs error. I wish some helper and advise:). of couse I will try to find and fix the error.
<LiHeng>Okay,that all for me. It's jumbled that many people need to change their station now.
<mhu>liangjun: sorry, I was not clear: I was asking whether you and Li Heng sychronize the work that each of you do, one work on parallel loading, the other one on partial loading; do you have a common plan how the result of loading should look like?
<mhu>liangjun: I try to look into loadofd cws, when I find some time, and see whether I can help to debug problems.
<LiHeng>different respects of loading
<LiHeng>zengliangjun has been working on parallel processing document object when a document loading
<LiHeng>and I am working on partly loading , that a function can parse and process the document object that render functions need to get
<mhu>LiHeng: yes, understood. you work on different aspects, but what happens when both your changes are integrated? i.e. both cws integrated, do we have partial and parallel loading then?
<liangjun>mhu: thank you. I wish you can help me check my design is right or no. I do't finish the package and linux implement. So you can't debug directly.
<mhu>liangjun: multithreading sometimes can be debuggged best with pencil and paper (i.e. check and verify the design)
<mhu>...and with code reviews.
<LiHeng>maybe both, but at first i think we can choose the better one to integrate into OOo
<LiHeng>Because, parallel loading maybe have more advantages if we know which document objects need to be parallel :)
<liangjun>LiHeng:mhu: Yes, I wish you can reviews my code simple. the implement is right or no :)
<liangjun>It can't work right sometimes and error sometimes. :)
<mhu>LiHeng: okay, understood. yes, maybe we first need to test the tow aspects, and decide then which is better.
<liangjun>It is the main thing is I can't find the problem, and fix it.
<mhu>liangjun: I try to find / make some time for code reviews.
<liangjun>mhu: thank you.
<LiHeng>mhu: Thanks, you are very kind!
<mhu>liangjun: you're welcome
<liangjun>:)
<mhu>okay, I also don't have more for today; except that we have a public holiday next Thursday, and I have a day vacation on Friday also. So, maybe we can have no meeting next week.
<mhu>...so that I have a long weekend from Thursday to Sunday next week.
<liangjun>Okay,that all for me.
<mhu>LiHeng: so, shall we finish for today ?
<liangjun>mhu: yes
<mhu>liangjun: LiHeng already disconnected ?
<liangjun>He maybe have some problems with network.
<mhu>okay, then bye all, and have a nice weekend; see you in two weeks, May 21.
<liangjun>okay :)