Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(150)

Issue 1749073002: Do V8 GC ASAP if system memory is pressured (Closed)

Created:
4 years, 9 months ago by hong.zheng
Modified:
4 years, 7 months ago
CC:
chromium-reviews, darin-cc_chromium.org, esprehn, gavinp+memory_chromium.org, jam, mkwst+moarreviews-renderer_chromium.org, mlamouri+watch-content_chromium.org, vmpstr+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Do V8 GC ASAP if system memory is pressured Currently after receiving memory pressure notification, Chrome posts asynchronous task to renderer main thread to trigger V8 GC. If renderer main thread is busy, purging memory task will be postponed running, which increases OOM risk. The CL can send memory pressure notification to renderer main thread synchronously and trigger V8 GC while V8 is in the middle of executing JavaScript. The CL depends on CL 1813963002 BUG=590975 Committed: https://crrev.com/f80422e52658fd87d4159bfeeddd703bae1d4180 Cr-Commit-Position: refs/heads/master@{#391167}

Patch Set 1 #

Total comments: 3

Patch Set 2 : Use ObserverList for synchronous notification and use the interrupt mechanism to send memory pressu… #

Total comments: 3

Patch Set 3 : Standardize variable name and move three statics into a struct in MemoryPressureLister class. In ad… #

Patch Set 4 : based on CL 1813963002 #

Total comments: 18

Patch Set 5 : add global listener and send notification to worker earlier #

Patch Set 6 : #

Total comments: 2

Patch Set 7 : send synchronous notification to worker thread #

Total comments: 10

Patch Set 8 : transfer memory pressure notification to worker thread isolates #

Total comments: 8

Patch Set 9 : update in WorkerBackingThread #

Total comments: 8

Patch Set 10 : address comments #

Total comments: 6

Patch Set 11 : address comments #

Total comments: 8

Patch Set 12 : extract MemoryPressureObserver from MemoryPressureListener #

Patch Set 13 : rebase #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+163 lines, -49 lines) Patch
M base/memory/memory_pressure_listener.h View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +12 lines, -5 lines 0 comments Download
M base/memory/memory_pressure_listener.cc View 1 2 3 4 5 6 7 8 9 10 11 3 chunks +58 lines, -22 lines 0 comments Download
M content/renderer/render_thread_impl.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +3 lines, -0 lines 0 comments Download
M content/renderer/render_thread_impl.cc View 1 2 3 4 5 6 7 8 9 10 11 12 7 chunks +35 lines, -22 lines 0 comments Download
M third_party/WebKit/Source/core/workers/WorkerBackingThread.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +3 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +39 lines, -0 lines 1 comment Download
M third_party/WebKit/Source/web/WebKit.cpp View 1 2 3 4 5 6 7 2 chunks +8 lines, -0 lines 0 comments Download
M third_party/WebKit/public/web/WebKit.h View 1 2 3 4 5 6 7 2 chunks +5 lines, -0 lines 0 comments Download

Messages

Total messages: 78 (20 generated)
hong.zheng
On 2016/03/01 10:26:48, hong.zheng wrote: > mailto:hong.zheng@intel.com changed reviewers: > + mailto:esprehn@chromium.org, mailto:mark@chromium.org PTAL
4 years, 9 months ago (2016-03-01 10:28:04 UTC) #3
Mark Mentovai
https://codereview.chromium.org/1749073002/diff/1/base/observer_list_threadsafe.h File base/observer_list_threadsafe.h (right): https://codereview.chromium.org/1749073002/diff/1/base/observer_list_threadsafe.h#newcode196 base/observer_list_threadsafe.h:196: // Note, these calls are synchronous. …and happen on ...
4 years, 9 months ago (2016-03-01 15:21:20 UTC) #4
esprehn
https://codereview.chromium.org/1749073002/diff/1/content/renderer/render_thread_impl.cc File content/renderer/render_thread_impl.cc (right): https://codereview.chromium.org/1749073002/diff/1/content/renderer/render_thread_impl.cc#newcode2199 content/renderer/render_thread_impl.cc:2199: blink::mainThreadIsolate()->LowMemoryNotification(); Is this safe? You're using the LowMemoryNotification method ...
4 years, 9 months ago (2016-03-01 22:15:07 UTC) #6
hong.zheng
On 2016/03/01 15:21:20, Mark Mentovai wrote: > https://codereview.chromium.org/1749073002/diff/1/base/observer_list_threadsafe.h > File base/observer_list_threadsafe.h (right): > > https://codereview.chromium.org/1749073002/diff/1/base/observer_list_threadsafe.h#newcode196 ...
4 years, 9 months ago (2016-03-02 02:32:52 UTC) #7
hong.zheng
On 2016/03/01 22:15:07, esprehn wrote: > https://codereview.chromium.org/1749073002/diff/1/content/renderer/render_thread_impl.cc > File content/renderer/render_thread_impl.cc (right): > > https://codereview.chromium.org/1749073002/diff/1/content/renderer/render_thread_impl.cc#newcode2199 > ...
4 years, 9 months ago (2016-03-02 02:38:34 UTC) #8
jochen (gone - plz use gerrit)
+ross/ulan as I was discussing something similar with them In general, I'm very unhappy about ...
4 years, 9 months ago (2016-03-02 07:59:38 UTC) #10
hong.zheng
On 2016/03/02 07:59:38, jochen wrote: > +ross/ulan as I was discussing something similar with them ...
4 years, 9 months ago (2016-03-02 09:05:06 UTC) #11
ulan
There was a question in bug discussion from Sami: > What's the user visible impact ...
4 years, 9 months ago (2016-03-02 09:12:08 UTC) #12
hong.zheng
On 2016/03/02 09:12:08, ulan wrote: > There was a question in bug discussion from Sami: ...
4 years, 9 months ago (2016-03-02 11:15:01 UTC) #13
hong.zheng
hi jochen, according to your comments, whether we can send a new InterruptFlag(MEMORY_PRESSURE_INTERRUPT, system memory ...
4 years, 9 months ago (2016-03-04 03:21:43 UTC) #14
jochen (gone - plz use gerrit)
On 2016/03/04 at 03:21:43, hong.zheng wrote: > hi jochen, > according to your comments, whether ...
4 years, 9 months ago (2016-03-04 09:40:29 UTC) #15
ulan
On 2016/03/04 09:40:29, jochen wrote: > On 2016/03/04 at 03:21:43, hong.zheng wrote: > > hi ...
4 years, 9 months ago (2016-03-04 09:49:02 UTC) #16
hong.zheng
On 2016/03/04 09:49:02, ulan wrote: > On 2016/03/04 09:40:29, jochen wrote: > > On 2016/03/04 ...
4 years, 9 months ago (2016-03-09 12:18:49 UTC) #18
hong.zheng
PTAL. The CL of V8 is in https://codereview.chromium.org/1777883002/
4 years, 9 months ago (2016-03-09 12:21:16 UTC) #19
Mark Mentovai
https://codereview.chromium.org/1749073002/diff/20001/base/memory/memory_pressure_listener.cc File base/memory/memory_pressure_listener.cc (right): https://codereview.chromium.org/1749073002/diff/20001/base/memory/memory_pressure_listener.cc#newcode38 base/memory/memory_pressure_listener.cc:38: sync_observers_lock_ = LAZY_INSTANCE_INITIALIZER; Why the trailing underscore? There’s no ...
4 years, 9 months ago (2016-03-09 16:15:19 UTC) #20
hong.zheng
Thanks Mark and Jochen for the comments. Patch Set 3 standardizes variable name and moves ...
4 years, 9 months ago (2016-03-15 12:04:21 UTC) #21
hong.zheng
PTAL. Depend on CL 1813963002
4 years, 9 months ago (2016-03-25 03:14:29 UTC) #23
hong.zheng
On 2016/03/25 03:14:29, hong.zheng wrote: > PTAL. Depend on CL 1813963002 The BUG=590975 has been ...
4 years, 9 months ago (2016-03-25 03:20:05 UTC) #24
esprehn
https://codereview.chromium.org/1749073002/diff/60001/base/memory/memory_pressure_listener.h File base/memory/memory_pressure_listener.h (right): https://codereview.chromium.org/1749073002/diff/60001/base/memory/memory_pressure_listener.h#newcode50 base/memory/memory_pressure_listener.h:50: // ObserverListThreadSafe is RefCountedThreadSafe, this traits is needed Why ...
4 years, 9 months ago (2016-03-25 09:20:35 UTC) #25
Mark Mentovai
https://codereview.chromium.org/1749073002/diff/60001/base/memory/memory_pressure_listener.h File base/memory/memory_pressure_listener.h (right): https://codereview.chromium.org/1749073002/diff/60001/base/memory/memory_pressure_listener.h#newcode122 base/memory/memory_pressure_listener.h:122: static MemoryPressureListenerObservers* g_observers; esprehn wrote: > why does this ...
4 years, 8 months ago (2016-03-25 16:59:31 UTC) #26
jochen (gone - plz use gerrit)
https://codereview.chromium.org/1749073002/diff/60001/content/renderer/render_thread_impl.cc File content/renderer/render_thread_impl.cc (right): https://codereview.chromium.org/1749073002/diff/60001/content/renderer/render_thread_impl.cc#newcode2193 content/renderer/render_thread_impl.cc:2193: blink::mainThreadIsolate()->MemoryPressureNotification(memoryPressureLevel); since this API is threadsafe, why not notify ...
4 years, 8 months ago (2016-03-30 16:22:24 UTC) #27
jochen (gone - plz use gerrit)
https://codereview.chromium.org/1749073002/diff/60001/content/renderer/render_thread_impl.cc File content/renderer/render_thread_impl.cc (right): https://codereview.chromium.org/1749073002/diff/60001/content/renderer/render_thread_impl.cc#newcode2180 content/renderer/render_thread_impl.cc:2180: switch (memory_pressure_level) { this should probably also take into ...
4 years, 8 months ago (2016-03-30 16:23:01 UTC) #28
hong.zheng
PTAL https://codereview.chromium.org/1749073002/diff/60001/base/memory/memory_pressure_listener.h File base/memory/memory_pressure_listener.h (right): https://codereview.chromium.org/1749073002/diff/60001/base/memory/memory_pressure_listener.h#newcode50 base/memory/memory_pressure_listener.h:50: // ObserverListThreadSafe is RefCountedThreadSafe, this traits is needed ...
4 years, 8 months ago (2016-04-01 09:22:34 UTC) #29
jochen (gone - plz use gerrit)
https://codereview.chromium.org/1749073002/diff/60001/content/renderer/render_thread_impl.cc File content/renderer/render_thread_impl.cc (right): https://codereview.chromium.org/1749073002/diff/60001/content/renderer/render_thread_impl.cc#newcode2180 content/renderer/render_thread_impl.cc:2180: switch (memory_pressure_level) { On 2016/04/01 at 09:22:34, hong.zheng wrote: ...
4 years, 8 months ago (2016-04-03 11:21:36 UTC) #30
hong.zheng
https://codereview.chromium.org/1749073002/diff/60001/content/renderer/render_thread_impl.cc File content/renderer/render_thread_impl.cc (right): https://codereview.chromium.org/1749073002/diff/60001/content/renderer/render_thread_impl.cc#newcode2180 content/renderer/render_thread_impl.cc:2180: switch (memory_pressure_level) { On 2016/04/03 11:21:35, jochen wrote: > ...
4 years, 8 months ago (2016-04-05 09:09:17 UTC) #31
jochen (gone - plz use gerrit)
I think 2) makes sense
4 years, 8 months ago (2016-04-07 03:53:34 UTC) #32
hong.zheng
https://codereview.chromium.org/1749073002/diff/60001/content/renderer/render_thread_impl.cc File content/renderer/render_thread_impl.cc (right): https://codereview.chromium.org/1749073002/diff/60001/content/renderer/render_thread_impl.cc#newcode2180 content/renderer/render_thread_impl.cc:2180: switch (memory_pressure_level) { On 2016/04/03 11:21:35, jochen - slow ...
4 years, 8 months ago (2016-04-07 10:55:50 UTC) #33
jochen (gone - plz use gerrit)
+kinuko Elliott/Kinuko, could you comment on the API to get the v8::Isolate* for all workers?
4 years, 8 months ago (2016-04-09 23:50:27 UTC) #35
kinuko
https://codereview.chromium.org/1749073002/diff/120001/base/memory/memory_pressure_listener.h File base/memory/memory_pressure_listener.h (right): https://codereview.chromium.org/1749073002/diff/120001/base/memory/memory_pressure_listener.h#newcode73 base/memory/memory_pressure_listener.h:73: explicit MemoryPressureListener( nit: no need of explicit here https://codereview.chromium.org/1749073002/diff/120001/third_party/WebKit/Source/core/workers/WorkerThread.cpp ...
4 years, 8 months ago (2016-04-11 09:30:40 UTC) #36
hong.zheng
thanks for your comments. I have modified the CL, PTAL. https://codereview.chromium.org/1749073002/diff/120001/base/memory/memory_pressure_listener.h File base/memory/memory_pressure_listener.h (right): https://codereview.chromium.org/1749073002/diff/120001/base/memory/memory_pressure_listener.h#newcode73 ...
4 years, 8 months ago (2016-04-15 06:05:57 UTC) #37
kinuko
Thanks, looks better now https://codereview.chromium.org/1749073002/diff/140001/third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp File third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp (right): https://codereview.chromium.org/1749073002/diff/140001/third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp#newcode29 third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp:29: DEFINE_STATIC_LOCAL(std::set<v8::Isolate*>, isolates, ()); This might ...
4 years, 8 months ago (2016-04-18 08:56:19 UTC) #38
kinuko
some more comments https://codereview.chromium.org/1749073002/diff/140001/third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp File third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp (right): https://codereview.chromium.org/1749073002/diff/140001/third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp#newcode17 third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp:17: #include <set> include order looks wrong ...
4 years, 8 months ago (2016-04-18 09:14:11 UTC) #39
hong.zheng
https://codereview.chromium.org/1749073002/diff/140001/third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp File third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp (right): https://codereview.chromium.org/1749073002/diff/140001/third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp#newcode17 third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp:17: #include <set> On 2016/04/18 09:14:11, kinuko wrote: > include ...
4 years, 8 months ago (2016-04-18 11:32:45 UTC) #40
esprehn
https://codereview.chromium.org/1749073002/diff/160001/content/renderer/render_thread_impl.cc File content/renderer/render_thread_impl.cc (right): https://codereview.chromium.org/1749073002/diff/160001/content/renderer/render_thread_impl.cc#newcode2139 content/renderer/render_thread_impl.cc:2139: if (blink::mainThreadIsolate()) { early return instead of indenting the ...
4 years, 8 months ago (2016-04-18 21:57:59 UTC) #41
hong.zheng
Thanks for comments https://codereview.chromium.org/1749073002/diff/160001/content/renderer/render_thread_impl.cc File content/renderer/render_thread_impl.cc (right): https://codereview.chromium.org/1749073002/diff/160001/content/renderer/render_thread_impl.cc#newcode2139 content/renderer/render_thread_impl.cc:2139: if (blink::mainThreadIsolate()) { On 2016/04/18 21:57:59, ...
4 years, 8 months ago (2016-04-19 06:27:43 UTC) #42
kinuko
lgtm for worker / the part I care about
4 years, 8 months ago (2016-04-20 12:18:22 UTC) #43
jochen (gone - plz use gerrit)
lgtm with comments https://codereview.chromium.org/1749073002/diff/180001/content/renderer/render_thread_impl.cc File content/renderer/render_thread_impl.cc (right): https://codereview.chromium.org/1749073002/diff/180001/content/renderer/render_thread_impl.cc#newcode2157 content/renderer/render_thread_impl.cc:2157: // moderate level for foregroud renderer. ...
4 years, 8 months ago (2016-04-20 12:46:35 UTC) #44
Mark Mentovai
https://codereview.chromium.org/1749073002/diff/180001/base/memory/memory_pressure_listener.cc File base/memory/memory_pressure_listener.cc (right): https://codereview.chromium.org/1749073002/diff/180001/base/memory/memory_pressure_listener.cc#newcode19 base/memory/memory_pressure_listener.cc:19: new MemoryPressureListener(); This results in a module initializer. Can’t ...
4 years, 8 months ago (2016-04-20 13:21:33 UTC) #45
hong.zheng
thanks for comments. PTAL https://codereview.chromium.org/1749073002/diff/180001/base/memory/memory_pressure_listener.cc File base/memory/memory_pressure_listener.cc (right): https://codereview.chromium.org/1749073002/diff/180001/base/memory/memory_pressure_listener.cc#newcode19 base/memory/memory_pressure_listener.cc:19: new MemoryPressureListener(); On 2016/04/20 13:21:33, ...
4 years, 8 months ago (2016-04-21 12:18:04 UTC) #46
Mark Mentovai
https://codereview.chromium.org/1749073002/diff/200001/base/memory/memory_pressure_listener.cc File base/memory/memory_pressure_listener.cc (right): https://codereview.chromium.org/1749073002/diff/200001/base/memory/memory_pressure_listener.cc#newcode35 base/memory/memory_pressure_listener.cc:35: base::AutoLock lock(GlobalListener()->sync_observers_lock_.Get()); Same here and on lines 59 and ...
4 years, 8 months ago (2016-04-21 20:45:33 UTC) #47
hong.zheng
PTAL https://codereview.chromium.org/1749073002/diff/200001/base/memory/memory_pressure_listener.cc File base/memory/memory_pressure_listener.cc (right): https://codereview.chromium.org/1749073002/diff/200001/base/memory/memory_pressure_listener.cc#newcode119 base/memory/memory_pressure_listener.cc:119: static MemoryPressureListener* listener = new MemoryPressureListener(); On 2016/04/21 ...
4 years, 8 months ago (2016-04-22 07:14:57 UTC) #48
Mark Mentovai
LGTM in base now.
4 years, 8 months ago (2016-04-22 13:06:15 UTC) #49
hong.zheng
@esprehn, PTAL
4 years, 7 months ago (2016-04-26 05:12:53 UTC) #50
esprehn
lgtm
4 years, 7 months ago (2016-04-27 06:46:02 UTC) #51
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1749073002/220001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1749073002/220001
4 years, 7 months ago (2016-04-27 07:20:20 UTC) #54
commit-bot: I haz the power
Try jobs failed on following builders: ios_dbg_simulator_ninja on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_dbg_simulator_ninja/builds/166160) ios_rel_device_gn on tryserver.chromium.mac (JOB_FAILED, ...
4 years, 7 months ago (2016-04-27 07:22:11 UTC) #56
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1749073002/220001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1749073002/220001
4 years, 7 months ago (2016-04-27 07:31:00 UTC) #58
commit-bot: I haz the power
Try jobs failed on following builders: ios_rel_device_gn on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_rel_device_gn/builds/25754) ios_rel_device_ninja on tryserver.chromium.mac (JOB_FAILED, ...
4 years, 7 months ago (2016-04-27 07:32:50 UTC) #60
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1749073002/240001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1749073002/240001
4 years, 7 months ago (2016-04-27 10:07:06 UTC) #63
commit-bot: I haz the power
Try jobs failed on following builders: linux_android_rel_ng on tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_android_rel_ng/builds/61049)
4 years, 7 months ago (2016-04-27 12:42:55 UTC) #65
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1749073002/240001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1749073002/240001
4 years, 7 months ago (2016-04-28 02:03:16 UTC) #67
commit-bot: I haz the power
Try jobs failed on following builders: linux_android_rel_ng on tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_android_rel_ng/builds/61710)
4 years, 7 months ago (2016-04-28 04:43:37 UTC) #69
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1749073002/240001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1749073002/240001
4 years, 7 months ago (2016-05-03 02:53:04 UTC) #71
commit-bot: I haz the power
Committed patchset #13 (id:240001)
4 years, 7 months ago (2016-05-03 04:23:50 UTC) #73
commit-bot: I haz the power
Patchset 13 (id:??) landed as https://crrev.com/f80422e52658fd87d4159bfeeddd703bae1d4180 Cr-Commit-Position: refs/heads/master@{#391167}
4 years, 7 months ago (2016-05-03 04:25:03 UTC) #75
Vitaly Buka (NO REVIEWS)
A revert of this CL (patchset #13 id:240001) has been created in https://codereview.chromium.org/1953483002/ by vitalybuka@chromium.org. ...
4 years, 7 months ago (2016-05-04 17:30:31 UTC) #76
jochen (gone - plz use gerrit)
https://codereview.chromium.org/1749073002/diff/240001/third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp File third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp (right): https://codereview.chromium.org/1749073002/diff/240001/third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp#newcode121 third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp:121: removeWorkerIsolate(m_isolate); i suspect this needs to come before V8PerIsolateData::destroy
4 years, 7 months ago (2016-05-04 18:28:14 UTC) #77
hong.zheng
4 years, 7 months ago (2016-05-05 10:36:42 UTC) #78
Message was sent while issue was closed.
On 2016/05/04 18:28:14, jochen wrote:
>
https://codereview.chromium.org/1749073002/diff/240001/third_party/WebKit/Sou...
> File third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp (right):
> 
>
https://codereview.chromium.org/1749073002/diff/240001/third_party/WebKit/Sou...
> third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp:121:
> removeWorkerIsolate(m_isolate);
> i suspect this needs to come before V8PerIsolateData::destroy

Thanks jochen's guidance. 
I verified removing worker thread isolate after V8PerIsolateData::destroy could
cause crash. So I fix it and upload the CL again in
https://codereview.chromium.org/1949153003

Powered by Google App Engine
This is Rietveld 408576698