在指定的页面中阻止WordPress插入额外换行

众所周知WordPress会对编辑器里的内容再格式化一遍,比如自动分段。但有些时候这些添加的格式反而也会让人很头疼。最近遇到WordPressinput,select,pre前会插入额外的换行即<br>,从而破坏页面样式的问题。

继续阅读在指定的页面中阻止WordPress插入额外换行

内存带宽简单介绍

内存,作为影响现代计算机性能至关重要的部件,最重要的指标有两个,分别是容量和带宽,而容量一般都很好理解,比如1G、2G,这也是大多数人对内存的最直观认识。更多关于内存的相关知识介绍,网上有一篇很好的文章“千丝万缕的联系 DDR1-3和GDDR1-5全解析”,所以这里也不打算多讲理论,还是来点更工程性的东西,或者说更实际点的。

以“KVR1333D3N9/2G”为例,这就包含有几个信息:产商为金士顿(KVR)、等效频率为1333MHz、传输类型为DDR3(D3)、容量2G。SDR内存和DDR内存的数据总线位宽都为64bit,所以等效频率为1333的内存带宽为1333MHz*64bit/8=10.664GB/s(注意:这里的G等于1000*1000*1000,而非1024*1024*1024)。这个公式应该很好理解:也就是一次传输64bit,一秒传输1333M次,所以一秒的总传输量(也就是带宽)就等于1333M*64。

对于双通道或三通道,可以简单的类比理解为,以前单通道是一根管子(内存控制器)放水,而双通道或三通道是两根或三根管子放水,所以放水量(内存带宽)成倍增长,当然这需要机器(以前是需要主板支持,更具体点是北桥芯片,但在Nehalem架构集成内存控制器后,就需要CPU来支持)对双通道或三通道的支持(即主板或cpu有两个或三个内存控制器,并且各个内存控制器相互独立工作),那么相应的,系统总内存带宽就能达到10.664GB/s*2=21.328GB/s或10.664GB/s*3=31.992GB/s。

32GB/s是1333内存三通道情况下的理论带宽,而实际带宽还与其它东西相关联,比如Intel Xeon E5504 CPU,虽然支持三通道,但其支持的最高频内存只是DDR3 800,所以即便是在Xeon E5504的机器上安装DDR3 1333的内存也并没有什么益处,因为DDR3 1333会被自动降频到800来使用,所能达到的最大内存带宽也就只有19.2GB/s。

将上面信息对照链接http://www3.intel.com/cd/channel/reseller/asmo-na/eng/products/server/processors/5500/feature/410125.htm中的表格:

Usage Workloads Memory Frequency Max B/W Recommended # of DIMMs per Channel Max DIMMs2 Max Capacity3
Maximum bandwidth HPC 1333 MHz 32 GB/s 1 6 48GB
General purpose Various apps 1066 MHz 25.5 GB/s 2 12 96GB
Maximum capacity Virtualized platforms 800 MHz 19.2 GB/s 2 QRO RDIMM 16GB 12 192GB
3 SR/DR RDIMM 8GB 18 144GB

可以看到匹配在800 MHz(Memory Frequency)/12(Max DIMMs)/192GB(Max Capacity)这一行,也即当前内存工作频率为800MHz。另外,对照Xeon E5504 CPU的Intel官方内存规格说明:

Memory Specifications
Max Memory Size (dependent on memory type)
144 GB
Memory Types
DDR3 800
# of Memory Channels
3
Max Memory Bandwidth
19.2 GB/s
Physical Address Extensions
40-bit
ECC Memory Supported
Yes

虽然最大内存容量标注为144GB,但其括号内已注明这个依赖于内存类型,而且144GB也是800MHz所对应的内存最大容量,所以并没有问题;支持三通道;最大带宽为19.2 GB/s;支持ECC内存校验。

另外的,Linux下可利用如下命令查看内存安插的情况,几个重要字段分别为:Data Width: 64 bits(数据总线位宽)、Size: 1024 MB(插槽上的内存容量为1G)、Speed: 1333 MHz (0.8 ns)(等效频率为1333MHz):

参考链接


内存带宽简单介绍

ubuntu 16.04(x64)编译LimeSDR v1.4的USB固件

最近在捣鼓LimeSDR,如果只使用USB供电的话,默认USB固件只向系统声明了400MA的电流。

明显当设备全功率运行的话,是不够设备使用的,全功率大约是3W以上的样子,因此,我们需要调整USB固件,向系统多申请些电流。

USB 3.0可以提供900MA的电流。

下面是如何编译LimeSDRUSB固件:

继续阅读ubuntu 16.04(x64)编译LimeSDR v1.4的USB固件

MCC 移动设备国家代码 (Mobile country code)

概述

移动设备国家代码 ( Mobile country code / MCC ) 定义于国际电信联盟 E.212 ,其目的为在电信网络中辨识用移动设备基地,特别是在全球移动通信系统和通用移动通信系统中。移动设备国家代码通常和移动设备网络代码结合使用(MCC/MNC)以用来辨试网络营运商。

移动设备国家代码是国际移动用户识别码的一部分。此识别码是用来辨认特定的用户,通常存储于可移除的SIM卡。在 GSM/UMTS 无线调制解调器中可用 AT 指令 AT+COPS 来得到目前的国家代码。

继续阅读MCC 移动设备国家代码 (Mobile country code)

ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境

操作系统调整

参考 ubuntu 16.04低延迟内核 安装低延时内核CPU调整为最大性能模式,并且不允许降低频率。

安装依赖包

编译安装SoapySDR

编译安装LimeSDR

编译安装USRP驱动

下载并解压缩需要的补丁,点击此处下载

下载并编译eNB

下载并编译EPC(核心网)

配置EPC

修改我们UE需要使用的配置文件

找到:

替换为:

测试功能,按照顺序打开四个独立Shell

 

 

 

正常启动之后,用手机(比如华为荣耀7)搜索运营型,可以找到一个名为20892的运营商,或者有些欧洲制式的手机可以正确的显示Eurecom这个法国电信运营商的名字。

继续阅读ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境

OpenAir, single machine Ubuntu 17.04, after major EPC update

(updated: 2017, July 10th)

Modifs since version on July 6th:

  • Latest commit
  • Fix lacking file in the tarball
    (non modified ones since the June version were missing)
  • improved code pieces formating in HTML, added automatic git patch
  • Full re-test, from disk install of Ubuntu 17.04 to UE throughput measurement

This document explains how to install and configure OAI EPC+eNB on one single Ubuntu 17.04 64 bits machine connected with a regular UE (a Huawei E3272), routing the UE traffic to internet.

We use EPC after a major contribution in May 2017: a lot of code has been modified, all directories names were changes, configuration parameters names/values changed.

The description uses a USRP B210 board, a Lime SDR page is provided separately.

We also explain how to simplify, fix existing issues, to make a single computer as a full LTE network: EPC+eNB.

Known limitations fixed in the hereafter description

  • OAI EPC require kernel >= 4.7, so we have to use Ubuntu 17.04
    • We already pushed some enhancements in OAI, nevertheless some more are required
  • GTP UDP ports are in conflict for eNB and SGW
  • Useless link between OAI and the Ubuntu/Linux hostname removed
  • Several simplifications and precisions to make easier and reliable installations

继续阅读OpenAir, single machine Ubuntu 17.04, after major EPC update

ubuntu 16.04执行git clone时失败“RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.”

前几天从github下载代码的时候,一直失败,提示如下:

如果操作系统的语言是英文的话,输出如下内容:

刚刚开始以为是由于GnuTLSBUG导致的。

当时的解决方法是翻墙出去进行克隆。或者用Windows进行克隆操作。

然而,从最近的新闻来看,更像是遭受了攻击导致的。

继续阅读ubuntu 16.04执行git clone时失败“RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.”

ubuntu 16.04系统LimeSDR使用srsLTE搭建LTE实验环境

操作系统调整
参考ubuntu 16.04低延迟内核安装低延时内核

CPU调整为最大性能模式,并且不允许降低频率

安装依赖包

编译安装SoapySDR

编译安装LimeSDR

编译安装srsGUI

编译安装srsLTE

测试

搭建LTE测试环境

如果设备(比如手机)的设置是按照ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境里面的设置的,设备参数如下图:
注意上图与OpenAirInterface中设置的不同之处,差别就是一个选中OPC,一个选中OP

则需要对配置文件进行如下调整:

注意目前srsLTE的CPU开销远远高于OpenAirInterface,差不多一个内核满负载,以及稳定性是低于OpenAirInterface的,经常出现连接困难以及中途掉线,这部分需要后续的持续修改。目前测试发现,在"lteEPC/epc.conf"中关闭GUI的显示,可以显著减低CPU开销,并增加稳定性,但是还是比OpenAirInterface要多消耗CPU。另外在"lteEPC/epc.conf"中日志设置成"all_level = none"也可以降低CPU开销,并且增加稳定性。

另外,注意"/tmp/enb.log",这个日志文件默认情况下,写入的比较多,文件大小增长很快,注意磁盘占用情况。

目前测试发现,使用Intel MKL加速的情况下,CPU降低并不明显,而稳定性下降非常多应该是代码的适配问题。因此,暂时不要使用Intel MKL。

目前测试发现,使用最新的FFTW3版本,使用AVX,AVX2加速的情况下,CPU开销更高,性能更差,应该是代码存在BUG。因此,暂时不要使用自己编译的FFTW3,使用系统自带的版本即可。

手机等设备的设置参考ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境最后的介绍。

上述的代码如果下载困难,可以从本站下载一份拷贝。

SoapySDR源代码下载
LimeSuite源代码下载
srsLTE源代码下载
srsGUI源代码下载
fftw3源代码下载

参考链接


ubuntu 16.04低延迟内核

在某些特殊环境中,比如音视频实时处理(比如MIDI),无线电数据的编解码(比如 OpenAirInterface 明确要求使用低延时内核)等情况下,我们希望系统尽可能的实时,同时又不会降低太多的性能(实时性越高,性能,功耗等的损失越大)。这种情况下,我们可以尝试使用低延时内核。

Linux提供了五种内核类型,对于内核类型的选择,可以参考如下的解释:

*******************************************

  • If you do not require low latency for your system then please use the -generic kernel.
  • If you need a low latency system (e.g. for recording audio) then please use the -preempt kernel as a fist choice. This reduces latency but doesn't sacrifice power saving features. It is available only for 64 bit systems (also called amd64).
  • If the -preempt kernel does not provide enough low latency for your needs (or you have an 32 bit system) then you should try the -lowlatency kernel.
  • If the -lowlatency kernel isn't enough then you should try the -rt kernel
  • If the -rt kernel isn't enough stable for you then you should try the -realtime kernel

*******************************************

目前(2018.02)为止,ubuntu官方库中提供前四种内核,我们一般建议使用lowlatency版本。可以使用如下命令安装:

目前,如果机器上使用了nvidia显卡,并且使用nvidia的闭源驱动的情况下,重启机器会无法进入图形界面,查看系统日志,出现如下错误信息:

解决方法如下:

注意,使用sudo apt-get dist-upgrade升级内核的时候,内核会被替换成generic版本,低延时内核需要手工重新安装一遍。

参考链接