[ 
https://issues.apache.org/jira/browse/ARROW-1795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16251040#comment-16251040
 ] 

ASF GitHub Bot commented on ARROW-1795:
---------------------------------------

luchy0120 closed pull request #1305: ARROW-1795: [Plasma] Change evict policy
URL: https://github.com/apache/arrow/pull/1305
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/cpp/src/plasma/eviction_policy.cc 
b/cpp/src/plasma/eviction_policy.cc
index 6c2309f17..4e52ade5e 100644
--- a/cpp/src/plasma/eviction_policy.cc
+++ b/cpp/src/plasma/eviction_policy.cc
@@ -77,10 +77,14 @@ bool EvictionPolicy::require_space(int64_t size,
   if (required_space > 0) {
     /* Try to free up at least as much space as we need right now but ideally
      * up to 20% of the total capacity. */
-    int64_t space_to_free = std::max(size, store_info_->memory_capacity / 5);
+    int64_t expect_to_free = store_info_->memory_capacity / 5;
     ARROW_LOG(DEBUG) << "not enough space to create this object, so evicting 
objects";
     /* Choose some objects to evict, and update the return pointers. */
-    num_bytes_evicted = choose_objects_to_evict(space_to_free, 
objects_to_evict);
+    if (memory_used_ >= expect_to_free && expect_to_free >= required_space) {
+      num_bytes_evicted = choose_objects_to_evict(expect_to_free, 
objects_to_evict);
+    } else {
+      num_bytes_evicted = choose_objects_to_evict(required_space, 
objects_to_evict);
+    }
     ARROW_LOG(INFO) << "There is not enough space to create this object, so 
evicting "
                     << objects_to_evict->size() << " objects to free up "
                     << num_bytes_evicted << " bytes.";


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> [Plasma C++] change evict policy
> --------------------------------
>
>                 Key: ARROW-1795
>                 URL: https://issues.apache.org/jira/browse/ARROW-1795
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: Plasma (C++)
>            Reporter: Lu Qi 
>            Assignee: Lu Qi 
>            Priority: Minor
>              Labels: pull-request-available
>
> case 1.say, we have total free memory 8 G , we have input 5G data, then comes 
> another 6G data, 
> if we choose to evict space 6G , it will throw exception saying that
> no object can be free. This is because we didn't count the 3G remaining free
> space .If we count this remaining 3G , we need to ask only 3G,thus
> we can evict the 5G data and we are still alive . 
> case 2. another situation is :  if we have free memory 10G , we input 1.5G 
> data ,then comes another
> 9G data , if we use  10*20% = 2G data to evict ,then we will crash . In this 
> situation we need to 
> use 9+1.5-10 = 0.5G data to evict  



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to