Performance/Meetings/2010 05

From Apache OpenOffice Wiki
Jump to: navigation, search

Performance 170.png
Performance Project

Quick Navigation




About this template


Meeting Minutes
IRC Meeting of ORACLE with RedOffice
Performance Project

Date: 2010/05/28


<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.
<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


Meeting Minutes
IRC Meeting of ORACLE with RedOffice
Performance Project

Date: 2010/05/21


<LiHeng>hi,what's up?
<LiHeng>waiting for mhu
<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
<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
<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).
<liangjun>mhu: thank you, okey. and I 'm fixing the detail on my computer( It is compiling , I can't get the result.)
<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>void * pResult = NULL;
<liangjun>pResult = malloc (n);
<liangjun>return pResult;
<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.
<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.
<mhu> 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


Meeting Minutes
IRC Meeting of ORACLE with RedOffice
Performance Project

Date: 2010/05/07


<mhu>Hi all
<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
<mhu>liangjun: could you push your changes to ? 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
<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> 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 :)

Go back

Personal tools