Testing Exosite GWE on Janus 400AP


#1

Hello,
I am Suresh Vakati, design engineer at Janus Remote Communications. We are trying to test Exosite GWE on our 400 AP. I downloaded GWE Version 1.4.4 tar ball, extracted and installed using “./install.sh”. This is the result, we have python 2.7 on our 400 AP.

======================================================================

FAIL: test_10_gmq (test.self_test.SelfTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test/self_test.py", line 121, in test_10_gmq
    self.fail("Test '{}' FAILED".format(cmd))
AssertionError: Test 'gmq --version' FAILED

----------------------------------------------------------------------
Ran 10 tests in 9.268s

FAILED (failures=1)
uname -a
uname -a
uname -m
uname -m
uname -n
uname -n
uname -r
uname -r
uname -s
uname -s
uname -p
uname -p
uname -v
uname -v
import json
Test 'import json' PASSED
import requests
Test 'import requests' PASSED
import twisted
import exo
Test 'import exo' PASSED
import GatewayEngine
Test 'import GatewayEngine' PASSED
import gmq
Test 'gdc --version' PASSED
********************* Installation Complete ******************************

When I rebooted and checked “supervisorctl status”, only gwe is running not gmq. I don’t know how to test your software. I created a murano account. Do I need to write any code to test this platform? Could someone walk me through the steps to test this?


#2

Hi Suresh,

It looks like the installation went fine all except for gmq. That’s the Gateway Message Queue.

It looks like, from the logging you provided, that the twisted python module is not installed on the 400AP. Is this correct? GMQ needs twisted to run.

I have GMQ running on a custom image I built using the 400AP buildroot toolchain. Using make menuconfig I was able to add the twisted module to the image. Is this something you’re able to do?

Thanks,

~Will


#3

Hello Will,
Yes, I can able to create a custom image but could you provide list of dependencies your software is using because your requirements.txt file in your software is empty. I am working on very old image file and we are planning to move to a new image soon, it would be nice to have all dependencies.


#4

Suresh,

In general, the GWE tarball ships with all of its dependencies and does a decent job of installing them. The one exception to this is the twisted python package. Since twisted is not pure-python and is not supported on the arm architecture from pypi, it must be either baked into the image or the target architecture needs to be armhf and be debian. The gmq installer makes an attempt at installing twisted from .deb packages, but they are compiled for armhf which isn’t helpful for the 400AP.

All that said, here is the pip freeze output from a recent installation of GWE on a 400AP.

# pip freeze
AtomicConfigParser==0.1.0
bottle==0.12.7
crc16==0.1.1
docopt==0.6.2
dpkt==1.7
elementtree==1.2.6.post20050316
enum==0.4.4
exo==1.4.22
GatewayEngine==1.4.4
gmq==1.1.37
httplib2==0.9
json-schema-validator==2.3
meld3==1.0.2
netifaces==0.10.4
protobuf==2.5.0
pyasn1==0.1.7
pycrypto==2.6
pyparsing==2.0.2
Pyro==3.14
pyserial==2.6
pysnmp==4.2.4
pysnmp-apps==0.3.3
pysnmp-mibs==0.1.4
python-daemon==1.5.5
pyusb==1.0.0b2
requests==2.5.1
simplejson==3.5.3
supervisor==3.0
thrift==0.9.2
Twisted==14.0.2
versiontools==1.9.1
x400ap==0.0.2
zope.interface==4.1.2

Of these, the following are NOT installed by GWE:

bottle==0.12.7
crc16==0.1.1
dpkt==1.7
enum==0.4.4
httplib2==0.9
json-schema-validator==2.3
netifaces==0.10.4
protobuf==2.5.0
pyasn1==0.1.7
pycrypto==2.6
pyparsing==2.0.2
Pyro==3.14
pyserial==2.6
pysnmp==4.2.4
pysnmp-apps==0.3.3
pysnmp-mibs==0.1.4
python-daemon==1.5.5
pyusb==1.0.0b2
simplejson==3.5.3
thrift==0.9.2
versiontools==1.9.1
zope.interface==4.1.2

#5

Okay Will,
Thank you. I got gmq and gwe running on my 400 AP as well. Do you have any simple tests that I can run to make sure its working?


#6

One thing you could do is run the self test.

cd /path/to/gateway-engine
python -m unittest test.self_test

Capture the output and paste it back into this thread and we can take a look to see that everything is normal.

Another thing you can do is verify that gwe can successfully activate by running gwe --gateway-cik. You should see a 40-char string printed to your terminal once it’s been activated.

To test out gmq, try using curl commands like the ones in the docs here.

There’s also a lightweight CLI called gdc for the Exosite HTTP Data API that can be used to communicate to either Exosite directly, or to gmq. You can find the docs here (but the location may change - sorry). The main trick with using gdc to send data via gmq is to implement

  1. Override the default host from m2.exosite.com to localhost:8090 with the gdc --host option.
  2. Disable SSL with the gdc --no-ssl as gmq communicates unencrypted on localhost.
  3. Disable the Product Domain feature with the gmq --no-product-domain. By default, the Product ID is pre-pended to the host (i.e. a9y794hj0a28h.m2.exosite.com).
  4. Disable form encoding of outbound data with the gmq --no-form-encode. This ensures your data is not form encoded twice (i.e. once by gdc and then again by gmq).

Putting these 4 together your gdc command line would look something like this:

gdc write $CIK $DATAPORT $MY_DATA --host localhost:8090 --no-ssl --no-product-domain --no-form-encode 

If you don’t want to use gmq, you can drop all those options and just use:

gdc write $CIK $DATAPORT $MY_DATA

#7

Also,

Since gdc is a command-line wrapper around classes in the device-client library, you can use it directly in a python application. Check the docs here for more info on this.

Besides these tests to see if all the “plumbing” works, the other main feature of GWE that you can/should test and utilize is application hosting via over the air update. For more info on this take a look at the docs here.


#8

These are the outputs I am seeing. I see CIK is an empty string.

cd /opt/gateway-engine

python -m unittest test.self_test

uname -a
Linux 400ap 3.10.11 #1 Tue Feb 14 09:30:07 CST 2017 armv5tejl GNU/Linux
uname -a
uname -m
armv5tejl
uname -m
uname -n
400ap
uname -n
uname -r
3.10.11
uname -r
uname -s
Linux
uname -s
uname -p
unknown
uname -p
uname -v
#1 Tue Feb 14 09:30:07 CST 2017
uname -v
.import json
Test ‘import json’ PASSED
.import requests
Test ‘import requests’ PASSED
.import twisted
Test ‘import twisted’ PASSED
.import exo
Test ‘import exo’ PASSED
.import GatewayEngine
Test ‘import GatewayEngine’ PASSED
.import gmq
Test ‘import gmq’ PASSED
.1.4.24
Test ‘gdc --version’ PASSED
.device-client: 1.4.24
gateway-engine: 1.4.8
.1.1.42
Test ‘gmq --version’ PASSED
.

Ran 10 tests in 32.842s

OK

gwe --gateway-cik

‘’

supervisorctl status

gmq RUNNING pid 596, uptime 0:13:39
gwe RUNNING pid 595, uptime 0:13:39

gwe --gateway-cfg

[device]
cik = ''
model = nmkhtvywz4k21emi
vendor = nmkhtvywz4k21emi
uuid = 00:00:00:00:00:00
iface = ppp0

[dataports]
usage_report = usage_report
engine_report = engine_report
engine_fetch = engine_fetch
device_info = device_info
fetch_status = fetch_status
update_interval = update_interval


#9

Hi Will,
After adding my Device to Murano platform, I got CIK.


#10

Awesome! I’m glad it worked out :slight_smile:


#11

When I use this curl command as shown in document, I am getting HTTP/1.1 400 Bad Request. In Product Definition, I have pressure, humidity, etc.

curl -XPOST z2mfiwadp31k0529.m2.exosite.com/onep:v1/stack/alias
-H ‘X-Exosite-CIK: <CIK_HERE>’
-H ‘Content-Type: application/x-www-form-urlencoded; charset=utf-8’
-H ‘Content-Length: 32’
-d “device_report={“pressure”: “63”}”


#12

That might be because your device doesn’t have a resource named device_report. I was able to tell this because your CIK was in your latest post. I’ll do what I can to edit it for you, but I would recommend regenerating your CIK.

Just as a heads up, this is why you will want to hold off posting tokens:


Try a cURL call like this to write data to alias that is owned by your device:

curl -X POST z2mfiwadp31k0529.m2.exosite.com/onep:v1/stack/alias -H 'X-Exosite-CIK: <CIK_HERE>' -H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' -d "<ALIAS_HERE>=55"

Hopefully this helps,
-Martin


#13

Thanks for editing my CIK, I regenerated a new CIK.
I tried what you suggested. cURL command is executed but it didn’t return any status code (returned an empty string). Last Value in product definition is also not updated on web portal.


#14

@SureshVakati

without the -i option will omit the status code and only print the body of the server’s response. Since the server responds with a 200 OK, there is no body to print.

The web portal may not automatically fetch new values. Does the value change if you refresh your page?


#15

I did refresh the page, I am seeing 0 in LAST VALUE.

Update: it is working.


#16

Excellent! I am glad to hear that it is working.


#17

Hey, Yesterday I sent couple of values, it seemed working fine. I left the device ON and I see these repeated errors.

cron_tasks.py invoked oom-killer: gfp_mask=0xd0, order=2, oom_score_adj=0

CPU: 0 PID: 1995 Comm: cron_tasks.py Not tainted 3.10.11 #1
[] (unwind_backtrace+0x0/0xec) from [] (show_stack+0x10/0x14)
[] (show_stack+0x10/0x14) from [] (dump_header.isra.14+0x44/0x15c)
[] (dump_header.isra.14+0x44/0x15c) from [] (oom_kill_process+0x1e4/0x380)
[] (oom_kill_process+0x1e4/0x380) from [] (out_of_memory+0x270/0x2ac)
[] (out_of_memory+0x270/0x2ac) from [] (__alloc_pages_nodemask+0x7ac/0x7dc)
[] (__alloc_pages_nodemask+0x7ac/0x7dc) from [] (__get_free_pages+0x10/0x4c)
[] (__get_free_pages+0x10/0x4c) from [] (pgd_alloc+0x14/0xdc)
[] (pgd_alloc+0x14/0xdc) from [] (mm_init.isra.69+0x94/0xd4)
[] (mm_init.isra.69+0x94/0xd4) from [] (do_execve+0x178/0x474)
[] (do_execve+0x178/0x474) from [] (SyS_execve+0x30/0x44)
[] (SyS_execve+0x30/0x44) from [] (ret_fast_syscall+0x0/0x2c)
Mem-info:
Normal per-cpu:
CPU 0: hi: 18, btch: 3 usd: 2
active_anon:13219 inactive_anon:31 isolated_anon:0
active_file:1 inactive_file:103 isolated_file:0
unevictable:0 dirty:0 writeback:0 unstable:0
free:390 slab_reclaimable:189 slab_unreclaimable:547
mapped:106 shmem:127 pagetables:91 bounce:0
free_cma:0
Normal free:1560kB min:984kB low:1228kB high:1476kB active_anon:52876kB inactive_anon:124kB active_file:4kB inactive_file:412kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:65536kB managed:60904kB mlocked:0kB dirty:0kB writeback:0kB mapped:424kB shmem:508kB slab_reclaimable:756kB slab_unreclaimable:2188kB kernel_stack:336kB pagetables:364kB unstable:0kB bounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:1 all_unreclaimable? yes
lowmem_reserve[]: 0 0
Normal: 1324kB (UEM) 878kB (UEM) 1516kB (UEM) 132kB (M) 164kB (M) 0128kB 0256kB 0512kB 01024kB 02048kB 04096kB = 1560kB
231 total pagecache pages
16384 pages of RAM
482 free pages
1129 reserved pages
736 slab pages
262936 pages shared
0 pages swap cached
[ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name
[ 418] 0 418 381 13 3 0 0 syslogd
[ 421] 0 421 380 12 3 0 0 klogd
[ 424] 0 424 482 49 3 0 -1000 udevd
[ 554] 0 554 352 33 3 0 0 pppd
[ 567] 0 567 384 16 3 0 0 crond
[ 575] 65534 575 276 22 3 0 0 dnsmasq
[ 588] 0 588 3379 1573 9 0 0 supervisord
[ 591] 0 591 380 12 3 0 0 watchdog
[ 592] 0 592 386 19 3 0 0 sh
[ 593] 0 593 4816 2561 11 0 0 gwe
[ 594] 0 594 12771 7980 27 0 0 gmq
[ 1991] 0 1991 383 15 3 0 0 sh
[ 1992] 0 1992 2551 815 7 0 0 cron_tasks.py
[ 1995] 0 1995 2294 813 7 0 0 cron_tasks.py
Out of memory: Kill process 594 (gmq) score 495 or sacrifice child
Killed process 594 (gmq) total-vm:51084kB, anon-rss:31504kB, file-rss:416kB
supervisord invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
CPU: 0 PID: 588 Comm: supervisord Not tainted 3.10.11 #1
[] (unwind_backtrace+0x0/0xec) from [] (show_stack+0x10/0x14)
[] (show_stack+0x10/0x14) from [] (dump_header.isra.14+0x44/0x15c)
[] (dump_header.isra.14+0x44/0x15c) from [] (oom_kill_process+0x1e4/0x380)
[] (oom_kill_process+0x1e4/0x380) from [] (out_of_memory+0x270/0x2ac)
[] (out_of_memory+0x270/0x2ac) from [] (__alloc_pages_nodemask+0x7ac/0x7dc)
[] (__alloc_pages_nodemask+0x7ac/0x7dc) from [] (filemap_fault+0x18c/0x3e0)
[] (filemap_fault+0x18c/0x3e0) from [] (__do_fault.isra.96+0x68/0x4d4)
[] (__do_fault.isra.96+0x68/0x4d4) from [] (handle_pte_fault+0x88/0xad8)
[] (handle_pte_fault+0x88/0xad8) from [] (handle_mm_fault+0x9c/0xd0)
[] (handle_mm_fault+0x9c/0xd0) from [] (do_page_fault+0x1d4/0x284)
[] (do_page_fault+0x1d4/0x284) from [] (do_PrefetchAbort+0x34/0x98)
[] (do_PrefetchAbort+0x34/0x98) from [] (ret_from_exception+0x0/0x10)
Exception stack(0xc2c7ffb0 to 0xc2c7fff8)
ffa0: b6452060 b65dbdd0 00000003 00000004
ffc0: b6f36710 b66dd738 beef64b0 beef63b0 00000004 b65ec0dc b6452060 b6432480
ffe0: beef62f8 beef62d0 b65daa6c b65d90ec 60000010 ffffffff
Mem-info:
Normal per-cpu:
CPU 0: hi: 18, btch: 3 usd: 2
active_anon:13356 inactive_anon:31 isolated_anon:0
active_file:0 inactive_file:98 isolated_file:32
unevictable:0 dirty:0 writeback:0 unstable:0
free:246 slab_reclaimable:191 slab_unreclaimable:548
mapped:135 shmem:151 pagetables:86 bounce:0
free_cma:0
Normal free:984kB min:984kB low:1228kB high:1476kB active_anon:53424kB inactive_anon:124kB active_file:0kB inactive_file:392kB unevictable:0kB isolated(anon):0kB isolated(file):128kB present:65536kB managed:60904kB mlocked:0kB dirty:0kB writeback:0kB mapped:540kB shmem:604kB slab_reclaimable:764kB slab_unreclaimable:2192kB kernel_stack:320kB pagetables:344kB unstable:0kB bounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:32 all_unreclaimable? yes
lowmem_reserve[]: 0 0
Normal: 8
4kB (UEM) 58kB (EM) 5716kB (EM) 032kB 064kB 0128kB 0256kB 0512kB 01024kB 02048kB 04096kB = 984kB
284 total pagecache pages
16384 pages of RAM
333 free pages
1129 reserved pages
739 slab pages
262370 pages shared
0 pages swap cached
[ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name
[ 418] 0 418 381 13 3 0 0 syslogd
[ 421] 0 421 380 12 3 0 0 klogd
[ 424] 0 424 482 49 3 0 -1000 udevd
[ 554] 0 554 352 33 3 0 0 pppd
[ 567] 0 567 384 16 3 0 0 crond
[ 575] 65534 575 276 22 3 0 0 dnsmasq
[ 588] 0 588 3379 1649 9 0 0 supervisord
[ 591] 0 591 380 17 3 0 0 watchdog
[ 592] 0 592 386 19 3 0 0 sh
[ 593] 0 593 4816 2561 11 0 0 gwe
[ 1997] 0 1997 13495 8182 29 0 0 gmq
[ 3287] 0 3287 383 15 3 0 0 sh
[ 3288] 0 3288 2294 869 7 0 0 cron_tasks.py
Out of memory: Kill process 1997 (gmq) score 508 or sacrifice child
Killed process 1997 (gmq) total-vm:53980kB, anon-rss:32364kB, file-rss:364kB
cron_tasks.py invoked oom-killer: gfp_mask=0x200da, order=0, oom_score_adj=0
CPU: 0 PID: 4382 Comm: cron_tasks.py Not tainted 3.10.11 #1
[] (unwind_backtrace+0x0/0xec) from [] (show_stack+0x10/0x14)
[] (show_stack+0x10/0x14) from [] (dump_header.isra.14+0x44/0x15c)
[] (dump_header.isra.14+0x44/0x15c) from [] (oom_kill_process+0x1e4/0x380)
[] (oom_kill_process+0x1e4/0x380) from [] (out_of_memory+0x270/0x2ac)
[] (out_of_memory+0x270/0x2ac) from [] (__alloc_pages_nodemask+0x7ac/0x7dc)
[] (__alloc_pages_nodemask+0x7ac/0x7dc) from [] (handle_pte_fault+0x258/0xad8)
[] (handle_pte_fault+0x258/0xad8) from [] (handle_mm_fault+0x9c/0xd0)
[] (handle_mm_fault+0x9c/0xd0) from [] (do_page_fault+0x1d4/0x284)
[] (do_page_fault+0x1d4/0x284) from [] (do_DataAbort+0x34/0x98)
[] (do_DataAbort+0x34/0x98) from [] (__dabt_usr+0x3c/0x40)
Exception stack(0xc1219fb0 to 0xc1219ff8)
9fa0: b6bebf20 00000007 b6f1f9e8 082e15fb
9fc0: be978e30 b6bebf20 be978f5c be978da4 00000002 b6ef734e b6f1613c b6ef734c
9fe0: b6bebf20 be978d18 b6e969a8 b6e93f44 00000010 ffffffff
Mem-info:
Normal per-cpu:
CPU 0: hi: 18, btch: 3 usd: 2
active_anon:13370 inactive_anon:31 isolated_anon:0
active_file:27 inactive_file:75 isolated_file:0
unevictable:0 dirty:0 writeback:0 unstable:0
free:245 slab_reclaimable:193 slab_unreclaimable:550
mapped:114 shmem:193 pagetables:92 bounce:0
free_cma:0
Normal free:980kB min:984kB low:1228kB high:1476kB active_anon:53480kB inactive_anon:124kB active_file:108kB inactive_file:300kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:65536kB managed:60904kB mlocked:0kB dirty:0kB writeback:0kB mapped:456kB shmem:772kB slab_reclaimable:772kB slab_unreclaimable:2200kB kernel_stack:336kB pagetables:368kB unstable:0kB bounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:91 all_unreclaimable? yes
lowmem_reserve[]: 0 0
Normal: 54kB (UEM) 108kB (UEM) 5516kB (UM) 032kB 064kB 0128kB 0256kB 0512kB 01024kB 02048kB 04096kB = 980kB
305 total pagecache pages
16384 pages of RAM
337 free pages
1129 reserved pages
743 slab pages
132055 pages shared
0 pages swap cached
[ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name
[ 418] 0 418 381 13 3 0 0 syslogd
[ 421] 0 421 380 12 3 0 0 klogd
[ 424] 0 424 482 49 3 0 -1000 udevd
[ 554] 0 554 352 33 3 0 0 pppd
[ 567] 0 567 384 16 3 0 0 crond
[ 575] 65534 575 276 22 3 0 0 dnsmasq
[ 588] 0 588 3379 1622 9 0 0 supervisord
[ 591] 0 591 380 12 3 0 0 watchdog
[ 592] 0 592 386 19 3 0 0 sh
[ 593] 0 593 4816 2561 11 0 0 gwe
[ 3293] 0 3293 13378 8039 28 0 0 gmq
[ 4378] 0 4378 383 15 3 0 0 sh
[ 4379] 0 4379 2294 857 7 0 0 cron_tasks.py
[ 4382] 0 4382 2294 844 7 0 0 cron_tasks.py
Out of memory: Kill process 3293 (gmq) score 499 or sacrifice child
Killed process 3293 (gmq) total-vm:53512kB, anon-rss:31844kB, file-rss:312kB
cron_tasks.py invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
CPU: 0 PID: 6026 Comm: cron_tasks.py Not tainted 3.10.11 #1
[] (unwind_backtrace+0x0/0xec) from [] (show_stack+0x10/0x14)
[] (show_stack+0x10/0x14) from [] (dump_header.isra.14+0x44/0x15c)
[] (dump_header.isra.14+0x44/0x15c) from [] (oom_kill_process+0x1e4/0x380)
[] (oom_kill_process+0x1e4/0x380) from [] (out_of_memory+0x270/0x2ac)
[] (out_of_memory+0x270/0x2ac) from [] (__alloc_pages_nodemask+0x7ac/0x7dc)
[] (__alloc_pages_nodemask+0x7ac/0x7dc) from [] (filemap_fault+0x18c/0x3e0)
[] (filemap_fault+0x18c/0x3e0) from [] (__do_fault.isra.96+0x68/0x4d4)
[] (__do_fault.isra.96+0x68/0x4d4) from [] (handle_pte_fault+0x88/0xad8)
[] (handle_pte_fault+0x88/0xad8) from [] (handle_mm_fault+0x9c/0xd0)
[] (handle_mm_fault+0x9c/0xd0) from [] (do_page_fault+0x1d4/0x284)
[] (do_page_fault+0x1d4/0x284) from [] (do_PrefetchAbort+0x34/0x98)
[] (do_PrefetchAbort+0x34/0x98) from [] (ret_from_exception+0x0/0x10)
Exception stack(0xc0ceffb0 to 0xc0cefff8)
ffa0: 00000002 b6e1d6d6 b6e06761 00000002
ffc0: 00000002 00000000 b6e06761 b6e1d6d6 00000032 b6f9e34c b6fbd13c 00000002
ffe0: b6fbd970 beaa3f00 b6dc669c b6dc67dc 20000010 ffffffff
Mem-info:
Normal per-cpu:
CPU 0: hi: 18, btch: 3 usd: 2
active_anon:13388 inactive_anon:31 isolated_anon:0
active_file:6 inactive_file:42 isolated_file:0
unevictable:0 dirty:0 writeback:0 unstable:0
free:246 slab_reclaimable:192 slab_unreclaimable:558
mapped:64 shmem:207 pagetables:92 bounce:0
free_cma:0
Normal free:984kB min:984kB low:1228kB high:1476kB active_anon:53552kB inactive_anon:124kB active_file:24kB inactive_file:168kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:65536kB managed:60904kB mlocked:0kB dirty:0kB writeback:0kB mapped:256kB shmem:828kB slab_reclaimable:768kB slab_unreclaimable:2232kB kernel_stack:328kB pagetables:368kB unstable:0kB bounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:33 all_unreclaimable? yes
lowmem_reserve[]: 0 0
Normal: 2
4kB (UM) 668kB (UEM) 2816kB (M) 032kB 064kB 0128kB 0256kB 0512kB 01024kB 02048kB 04096kB = 984kB
269 total pagecache pages
16384 pages of RAM
337 free pages
1129 reserved pages
750 slab pages
262884 pages shared
0 pages swap cached
[ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name
[ 418] 0 418 381 13 3 0 0 syslogd
[ 421] 0 421 380 12 3 0 0 klogd
[ 424] 0 424 482 49 3 0 -1000 udevd
[ 554] 0 554 352 33 3 0 0 pppd
[ 567] 0 567 384 16 3 0 0 crond
[ 575] 65534 575 276 22 3 0 0 dnsmasq
[ 588] 0 588 3379 1604 9 0 0 supervisord
[ 591] 0 591 380 12 3 0 0 watchdog
[ 592] 0 592 386 19 3 0 0 sh
[ 593] 0 593 4816 2561 11 0 0 gwe
[ 4383] 0 4383 13305 7960 28 0 0 gmq
[ 6022] 0 6022 383 15 3 0 0 sh
[ 6023] 0 6023 2294 839 7 0 0 cron_tasks.py
[ 6026] 0 6026 2294 813 7 0 0 cron_tasks.py


#18

Looks like the Linux Out of Memory Killer was killing GMQ. I know that on the 400AP the temporary file system is the same as primary memory. Are you storing large amounts of log files?

You will need to balance the memory usage of the software running on the machine with the constraints of your embedded system.

How are you using memory on that device? Have you created a profile?